gpt4 book ai didi

php - PDOException'无效参数号: parameter was not defined

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

我认为这应该是一个简单的问题,但我看不到它。

$SQL = "Select `id` from `fileStore` WHERE `uid` = ':UID' and `offset` = :OFFSET";
$InPut = array(':UID' => $LocArr[0],':OFFSET' => $LocArr[1]);
echo(str_replace(array_flip($InPut),$InPut,$SQL));
$stmt = $db->prepare($SQL);
$stmt->execute($InPut);

Echo 线给了我。

Select `id` from `fileStore` WHERE `uid` = '20151009162211-909549588' and `offset` = 1

我可以针对数据库运行它。但我收到错误。

Fatal error: 
Uncaught exception 'PDOException' with message
'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined'
in filepath\UploadParser.php:
117 Stack trace: #0 filepath\UploadParser.php(117):
PDOStatement->execute(Array) #1 {main} thrown in filepath\UploadParser.php on line 117

最佳答案

在您的查询中,您引用了第一个占位符,这使其成为一个字符串。当执行被触发时,PDO 会感到困惑,因为你告诉它有两个占位符,但它只找到一个(未加引号的占位符)。

要解决该问题,请尝试

$SQL = "Select `id` from `fileStore` WHERE `uid` = :UID and `offset` = :OFFSET";
$InPut = array(':UID' => $LocArr[0],':OFFSET' => $LocArr[1]);
$stmt = $db->prepare($SQL);
$stmt->execute($InPut);

这应该使 :UID = $LocArr[0]:OFFSET = $LocArr[1] >,当它进入数据库时​​。

您似乎还试图将占位符替换为查询中的实际值,但您不应该这样做。这消除了准备好的语句的目的。

另一种写法是

$SQL = "Select `id` from `fileStore` WHERE `uid` = ? and `offset` = ?";
$stmt = $db->prepare($SQL);
$stmt->execute(array($LocArr[0], $LocArr[1]));

关于php - PDOException'无效参数号: parameter was not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33043087/

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