简体   繁体   中英

Zend_Validate_Db_NoRecordExists - query is broken, not sure why

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?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM