gpt4 book ai didi

mysql - 无效参数编号 : number of bound variables does not match number of tokens

转载 作者:行者123 更新时间:2023-11-29 03:48:44 25 4
gpt4 key购买 nike

我有一张 table :几列的“对象”:object_id:int, object_type:int, object_status:int, object_lati:float, object_long:float我的查询是:

$stmt = $db->query('SELECT o.object_id, o.object_type, o.object_status, o.object_lati, o.object_long FROM objects o WHERE o.object_id = 1');
$res = $stmt->fetch();

PDO 抛出错误:

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

当我删除列 object_latiobject_long 时,查询工作正常。

最佳答案

虽然这个特定问题不是真正的问题,因为所提供的代码永远不会产生这样的错误,但 Google 似乎很乐意将访问者引导至此页面。下面的答案是给谁的:

这个问题永远不可能是query()方法调用引起的,因为它本质上属于prepared statement。

错误本身很清楚:“number of tokens”代表查询中 ?:name 标记的数量(也称为“占位符”) ,而“绑定(bind)的变量数”代表通过 bindValue 或 `bindParam 绑定(bind)的变量,或通过 execute 发送的变量(技术上是相同的)。因此,当尝试绑定(bind)比查询中定义的标记更多的变量时,PDO 会引发此错误。

例如,如果有一个未定义标记的查询,但我们正试图将一个变量绑定(bind)到它:

$stmt = $db->prepare('SELECT * FROM objects o WHERE o.object_id = 1');
$stmt->execute(array($id));

那么它将导致非常错误的消息,因为绑定(bind)变量的数量 (1) 与标记的数量 (0) 不匹配。

要解决这个问题,只需仔细比较准备好的查询中的标记数与绑定(bind)到语句的变量数。

关于mysql - 无效参数编号 : number of bound variables does not match number of tokens,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2154119/

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