猿问

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

我正在尝试在 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 解释为上面的查询。我希望我的解释足够清楚。由于我还是个菜鸟,有时我不能正确表达我的需求。


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


凤凰求蛊
浏览 109回答 2
2回答

蝴蝶不菲

请尝试以下操作:$wordAr = array(':1' => 'anglais,' ':2' => 'espagnol');然后执行时,只需执行 $stmt->execute($wordAr);

饮歌长啸

我正在尝试在 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 解释为上面的查询。我希望我的解释足够清楚。由于我还是个菜鸟,有时我不能正确表达我的需求。非常感谢您的帮助,我每天都在学习它。
随时随地看视频慕课网APP
我要回答