gpt4 book ai didi

php - PDO 无法识别参数

转载 作者:行者123 更新时间:2023-11-29 07:31:27 26 4
gpt4 key购买 nike

我有这个查询:

INSERT INTO user ( username , password , role )
SELECT
CONCAT( :username1 , "-" , ABS( REPLACE( (
SELECT username FROM user
WHERE username LIKE :username2
ORDER BY ID DESC LIMIT 1
), :username3, "" ) ) + 1 ) AS username,
:password,
:role

在 php 中,我有用于绑定(bind)值的代码:

$dbp = $db->prepare( $query );
for( $i = 1 ; $i <= 3 ; $i++ ){
$dbp->bindValue( ':username' . $i , ( $i == 2 ? 'test%' : 'test' ) );
}
$dbp->bindValue( ':password' , '0' );
$dbp->bindValue( ':role' , 'test' );
$dbp->execute();

我在查询中有 5 个参数:

:username1 , :username2 , :username3 , :password , :role

并且每个人都被分配了bindValue函数。

但是它会触发此错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]:
Invalid parameter number: parameter was not defined' in [...]
PDOStatement->bindValue(':username1', 'test') #1 {main} thrown in [...]

但是该参数确实存在于我的查询和 for 循环中。我不能在 CONCAT 函数中使用参数吗?

This但是,链接对我没有帮助:

1) The :parameter name does not match the bind by mistake (typo?)

正如我所说,每个参数都是匹配的:我在每个bindValue之前回显,并且每个参数都被正确写入。

2) Completely forgetting to add the bindValue()

5个参数,5个bindValues,5个正确匹配的回显

第三点不是我的问题。

最佳答案

hundreds similar questions已经在这个网站上了。 他们中没有人发现 PDO 绑定(bind)的神秘之处。所有这些都是由一个简单的打印错误引起的。无一异常(exception)。

您可以在查询的任何部分使用参数,只要它代表完整且单一的数据文字。

关于php - PDO 无法识别参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32523624/

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