Php PDO无法识别参数

Php PDO无法识别参数,php,mysql,pdo,parameters,Php,Mysql,Pdo,Parameters,我有一个疑问: 插入用户用户名、密码、角色 选择 CONCAT:username1,-,ABS替换 从用户中选择用户名 其中用户名类似:username2 按ID顺序描述限制1 ,:username3,+1作为用户名, :密码, :角色 在php中,我有以下绑定值的代码: $dbp = $db->prepare( $query ); for( $i = 1 ; $i <= 3 ; $i++ ){ $dbp->bindValue( ':username' . $i

我有一个疑问:

插入用户用户名、密码、角色 选择 CONCAT:username1,-,ABS替换 从用户中选择用户名 其中用户名类似:username2 按ID顺序描述限制1 ,:username3,+1作为用户名, :密码, :角色 在php中,我有以下绑定值的代码:

$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();
它们中的每一个都被分配了bindValue函数

howewer它会触发此错误:

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 [...]
但是参数do存在于我的查询和for循环中。我不能在CONCAT函数中使用参数吗

然而,link并不能帮助我:

1:参数名称与误键入的绑定不匹配

正如我所说的,每个参数都是匹配的:我在每个bindValue之前进行了回音,并且每个参数都写得正确

2完全忘记添加bindValue

5个参数,5个值,5个回声,匹配正确

第三点不是为了我的问题。

这个网站上已经有了。他们中没有一个人发现了PDO绑定的神秘之处。所有这些都是由一个简单的印刷错误造成的。没有例外


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

在准备之前您是否已将$query转储?简单测试:如果出于任何疯狂的原因,mysql不允许在concat调用中使用占位符,请先尝试绑定到:username3,而不使用循环。e、 g.手动调用bind,不使用循环。
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 [...]