gpt4 book ai didi

php - 无法解释的 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens'

转载 作者:行者123 更新时间:2023-11-29 00:19:15 36 4
gpt4 key购买 nike

出于某种我不知道的原因,我收到此错误消息:

> 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 这应该是正确的参数编号。

那么这里有什么问题呢?

最佳答案

我假设您想要将第一个参数替换为“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'

关于php - 无法解释的 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21737241/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com