原则(无效参数编号:绑定变量的数量与令牌的数量不匹配)


Doctrine (Invalid parameter number: number of bound variables does not match number of tokens)

我无法使用Doctrine调试错误。我有以下代码,旨在获取特定所有者的所有帐户(表"所有者"answers"帐户"之间存在一对多映射关系):

$em = $this->getDoctrine()->getManager();
$query = $em->createQuery('SELECT a FROM AcmeUserBundle:Account a WHERE a.owner=11');
$accounts = $query->getResult();

这段代码非常有效,可以为id为11的所有者获取所有帐户。现在,作为调试的一部分,我刚刚更改了所有者id的确定,如下所示:

$id = 11;
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery('SELECT a FROM AcmeUserBundle:Account a WHERE a.owner=:id');
$accounts = $query->getResult();

我收到以下错误消息"无效的参数编号:绑定变量的数量与令牌的数量不匹配"。有人能给我一些关于"绑定变量"answers"令牌"概念的高级解释吗?同时让我知道如果我想在php控制器的其他地方定义"id",我应该使用什么代码?谢谢

您需要为查询设置参数$id,否则构建器将无法知道您的$id:

$query->setParameter('id', $id);

正如错误所说,作为您设置的参数的绑定变量的数量与作为":id"等的令牌的数量不匹配。