由于某些我不知道的原因,我收到此错误消息:
> Fatal error: Uncaught exception 'PDOException' with message
> 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables
> does not match number of tokens' in /var/www/tools/search.php:56 Stack
> trace: #0 /var/www/tools/search.php(56): PDOStatement->execute(Array)
> #1 {main} thrown in /var/www/tools/search.php on line 56
这是我的疑问:
$query = SELECT * FROM renkaat
INNER JOIN ajoneuvotyypit ON tyyppiID = ajoneuvotyyppiID
INNER JOIN vuodenajat ON vuodenaikaID = renkaat.vuodenaika
INNER JOIN valmistajat ON valmistajaID = renkaat.valmistaja
WHERE olemassa = ? AND ajoneuvontyyppiID = ?
错误指向第56行,包含:
$db = $pdo->prepare($query);
$db->execute(array($exec_array));
毫无疑问,$exec_array
是值得责备的人。但是,当我在执行它之前打印该值时,我得到1,1
,这应该是正确的参数编号。
那么这里有什么问题?
答案 0 :(得分:1)
我假设你想要用'1'替换第一个参数而用'1'替换第二个参数;
如果$exec_array
已经是一个包含2个条目的数组,那么您应该这样做:
$db->execute($exec_array);
将$exec_array
放入数组中,使其成为具有单个条目的数组execute
的参数。您的查询正在查找包含2个值的数组。
如果你运行var_dump($exec_array);
,我假设你得到一个2值数组([0] => 1,[1] => 1)
如果$exec_array
实际上是一个字符串'1,1',您需要在将它作为参数执行之前将其分解为数组:
$exec_array = explode(',', $exec_array);
$db->execute($exec_array);
否则使用array($exec_array)
只会创建一个条目数组[0]=> '1,1'