Php 消息:SQLSTATE[HY093]:无效参数编号:混合命名参数和位置参数

Php 消息:SQLSTATE[HY093]:无效参数编号:混合命名参数和位置参数,php,zend-framework,zend-validate,Php,Zend Framework,Zend Validate,我遇到了一个以前从未见过的错误: Message: SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters 参考以下代码(简化了功能以便于阅读): 6 C:\xampp\htdocs\portal-gep-2\library\Null\Validate\Db\NoRecordExists.php(7):Zend\u Validate\u Db\u NoRecordExists->isVa

我遇到了一个以前从未见过的错误:

Message: SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters 
参考以下代码(简化了功能以便于阅读):

6 C:\xampp\htdocs\portal-gep-2\library\Null\Validate\Db\NoRecordExists.php(7):Zend\u Validate\u Db\u NoRecordExists->isValid('7505020152089'))
类Null\u Validate\u Db\u NoRecordExists扩展了Zend\u Validate\u Db\u NoRecordExists
{
公共函数有效($value)
{
$response=parent::isValid($value);//此行
如果(!$response){
$this->\u消息=
数组(self::ERROR\u RECORD\u FOUND=>“请在继续之前更正此错误”);
}
返回$response;
}
}

该表单具有该表单的构造函数:

public function __construct($formState = 'createlocal', $currentTask = null)
根据表单是更新现有记录还是更新新记录,它将使用自定义验证器:
Null\u Validate\u Db\u NoRecordExists

在您提到的特定情况下,表单在现有记录上使用了一个
Db_NoRecordExists
,因此我们希望在本例中使用构造函数参数之一排除特定记录(当前记录):
$currentTask

$currenctask
可以是数组,验证程序可以使用数组变量,同时确保记录不存在(在where子句中)。但是,在最初构造表单时,不会解析该变量


因此,请检查
$currentTask
是否包含它需要包含的内容。错误是您自己造成的。

您确定错误在那一行吗?因为它是SQL错误,我不认为任何SQL语句在那行上被解雇。我猜你使用了一个验证器,比如“代码> ZEnjValueTyBudBordNeCordExisters<代码>或其他,我认为这是你应该看的地方。我编辑了我的问题。你如何声明你的验证器和使用它的元素?考虑关闭这个问题,太具体了。
class Null_Validate_Db_NoRecordExists extends Zend_Validate_Db_NoRecordExists
{
    public function isValid($value)
    {
       $response = parent::isValid($value);//this line
       if(!$response){
           $this->_messages =
                array(self::ERROR_RECORD_FOUND=> "Please correct this error before continuing <a href='/data-control/idnum/id/$value'>Correct Issue</a>");
       }
       return $response;
    }
}
public function __construct($formState = 'createlocal', $currentTask = null)