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

时间:2011-08-08 14:27:31

标签: php zend-framework zend-form zend-db

我写了以下内容:

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

这不起作用,而是我收到以下错误消息:

消息:SQLSTATE [42000]:语法错误或访问冲突:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'FROM site_users WHERE(``='Test data4')第1行的LIMIT 1'附近使用正确的语法

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

只是查看代码并在Zend_Validate_Db_AbstractZend_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;

因此它希望选项的顺序正确,并忽略您指定的键!离奇。但看起来你的代码应该仍然有效 - 你在运行什么版本的ZF?