使用Doctrine 2,我想让一些用户成为另一个用户的联系人。该表user
包含这些用户之间的映射。函数中的查询将返回以下错误:
参数编号无效:绑定变量的数量与令牌的数量不匹配。
但是,据我所知,$str
它设置为“ b”,$ownerId
设置为“ 2”,两者均由该setParameters
功能分配。
protected function getContactBySubstring($str, $ownerId) {
echo $str;
echo $ownerId;
$em = $this->getDoctrine()->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->add('select', 'u')
->add('from', '\Paston\VerBundle\Entity\User u, \Paston\VerBundle\Entity\Contact c')
->add('where', "c.owner = ?1 AND c.contact = u.id AND u.username LIKE '?2'")
->add('orderBy', 'u.firstname ASC, u.lastname ASC')
->setParameters(array (1=> $ownerId, 2=> '%'.$str.'%'));
echo $qb->getDql();
$query = $qb->getQuery();
$users = $query->getResult();
foreach($users as $user)
echo $user->getUsername();
exit;
//return $contacts;
}
不要在查询文本中用引号将任何参数引起来!
->add('where', "c.owner = ?1 AND c.contact = u.id AND u.username LIKE '?2'")
应该
->add('where', "c.owner = ?1 AND c.contact = u.id AND u.username LIKE ?2")
问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 我收到SQLSTATE [HY093]错误:无效的参数编号:绑定变量的数量与以下comments.php中第102行的令牌数量不匹配: 问题答案: 您没有在此处绑定所有绑定 您已经声明了一个名为:numRows的绑定,但实际上从未绑定任何东西
我不明白为什么我会得到这样的错误:“prepared Statement中的变量数不匹配参数数”。 我的代码如下所示:
问题内容: 我一直在尝试使用准备好的语句在PHP中编写登录表单,但是每次尝试登录时,都会出现以下错误: mysqli_stmt :: bind_result():绑定变量的数量与准备好的语句中的字段数量不匹配 这是我的代码: 有人可以告诉我为什么会这样吗? 问题答案: 如果这确实是您的代码,则可能是$ _POST [“ name”]或$ _POST [“ password”]是一个数组,因此bin
问题内容: 因此,我需要执行大量令人头痛的查询,涉及到需要使用mysqli预准备语句将 65个 表单输入注入数据库的查询。 我遇到的问题是它说我尝试调用的变量数与我正在使用的“ s”数不匹配。 我数了十二遍 ,看不到我要去哪里错了。有65个变量和65个“ s”。 谁能看到我想念的东西?还是我可能以错误的方式使用bind_param方法? 问题答案: 字符串中的字符不应用逗号分隔: 您可以在手册页的
问题内容: 我正在尝试将以下对象保留为version : 当我尝试从数据库读回对象时,我得到一个(请参阅下面的完整堆栈跟踪) 我的小组使用的命名约定要求参数变量名称以开头,实例变量名称以开头。似乎在假设构造函数参数变量名称必须与对象实例变量名称匹配。 为什么不将构造函数参数用于我在构造函数中定义的实例变量映射? 有没有另一种方法来定义此映射,从而可以正确地构造我的对象,或者我是打破命名约定的唯一选
我得到这个错误: