为了账号安全,请及时绑定邮箱和手机立即绑定

未捕获的 PDOException:SQLSTATE[HY093]:参数数量无效:

未捕获的 PDOException:SQLSTATE[HY093]:参数数量无效:

PHP
凤凰求蛊 2023-10-15 17:13:04
我正在尝试在 PDO 查询中使用准备好的数组。我有以下代码:$wordAr = array([0] => ':1' => 'anglais,' [1] => ':2' => 'espagnol'); #Built dynamically in reality$createTable = "SELECT * FROM candidates WHERE ";$createTable .= "CandId IN (SELECT CandId FROM etiquettes WHERE speak = :1)";$createTable .= "AND CandId IN (SELECT CandId FROM etiquettes WHERE speak = :2)";$stmt = $dbConn->prepare($createTable);$stmt->execute(array($wordsAr));$result = $stmt-fetchall();这给了我以下错误: Uncaught PDOException: SQLSTATE[HY093]...(与标题相同)通常我会像这样执行查询:$stmt->execute(array(':1' => 'anglais',':2' => 'espagnol'));但这次数组是动态构建的。(我把它放在这个例子中如何用 print_r 显示它。我想我的问题是如何构建我的数组,但我找不到如何正确构建它。我的目的是将 $wordAr 解释为上面的查询。我希望我的解释足够清楚。由于我还是个菜鸟,有时我不能正确表达我的需求。非常感谢您的帮助,我每天都在学习它。
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

请尝试以下操作:

$wordAr = array(':1' => 'anglais,' ':2' => 'espagnol');

然后执行时,只需执行 $stmt->execute($wordAr);


查看完整回答
反对 回复 2023-10-15
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

我正在尝试在 PDO 查询中使用准备好的数组。


我有以下代码:


$wordAr = array([0] => ':1' => 'anglais,' [1] => ':2' => 'espagnol'); #Built dynamically in reality

$createTable = "SELECT * FROM candidates WHERE ";

$createTable .= "CandId IN (SELECT CandId FROM etiquettes WHERE speak = :1)";

$createTable .= "AND CandId IN (SELECT CandId FROM etiquettes WHERE speak = :2)";

$stmt = $dbConn->prepare($createTable);

$stmt->execute(array($wordsAr));

$result = $stmt-fetchall();

这给了我以下错误: Uncaught PDOException: SQLSTATE[HY093]...(与标题相同)通常我会像这样执行查询:


$stmt->execute(array(

':1' => 'anglais',

':2' => 'espagnol'));

但这次数组是动态构建的。(我把它放在这个例子中如何用 print_r 显示它。


我想我的问题是如何构建我的数组,但我找不到如何正确构建它。


我的目的是将 $wordAr 解释为上面的查询。我希望我的解释足够清楚。由于我还是个菜鸟,有时我不能正确表达我的需求。


非常感谢您的帮助,我每天都在学习它。


查看完整回答
反对 回复 2023-10-15
  • 2 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号