Zend_Validate_Db_NoRecordExists - 查询被破坏,不确定原因

I've written the following:

  $email->addValidator('emailAddress', false)
        ->setRequired(true)
        ...
        ->addValidator(new Zend_Validate_Db_NoRecordExists(
            array(
                'table'   => 'site_users',
                'field'   => 'email',
            )
        ));

This isn't working and instead I'm getting the following error message:

Message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM site_users WHERE (`` = 'Test data4') LIMIT 1' at line 1

Any ideas?

Just had a look at the code and found this in the constructor for Zend_Validate_Db_Abstract (parent of Zend_Validate_Db_NoRecordExists):

        $options       = func_get_args();
        $temp['table'] = array_shift($options);
        $temp['field'] = array_shift($options);
        if (!empty($options)) {
            $temp['exclude'] = array_shift($options);
        }

        if (!empty($options)) {
            $temp['adapter'] = array_shift($options);
        }

        $options = $temp;

So it expects the options to be in the correct order, and ignores the keys you specify! Bizarre. But it looks like your code should have still worked - what version of ZF are you running?