如果我使用冒号,PHP 绑定(bind)参数数据库调用参数数量错误

标签 php mysql

        $sth = $dbh->prepare("SELECT users.userID,fname,lname,status FROM users INNER JOIN friends ON users.userID = friends.friendID WHERE friends.userID = ? AND ((friends.status LIKE 'group%' OR friends.status = 'friends') OR (users.status = '?') OR (users.userID = ?)) ORDER BY friends.status,lname,fname ASC");
    $sth->execute(array($_SESSION['userID'],'sub:'.$_SESSION['userID'],$_SESSION['userID']));

在上面的代码中,您可以看到我有一个带有查询的准备语句。在该查询中,我对变量替换有三个问号。在执行语句中,我提供了变量。最后我检查了一下,我可以数到三,但 PHP 不同意。对于执行所在的行,我不断收到“无效参数编号:绑定(bind)变量的数量与标记数量不匹配”。

我认为它可能与第二个参数中的冒号有关,所以我把它拿出来,但它做了同样的事情。我什至拉出了字符串连接,只留下了 userID,我得到了同样的结果。

要么已经很晚了,要么这里发生了一些巫术。有什么见解吗?

最佳答案

这个'?'不是一个占位符,它是一个字面上的问号。占位符不会被引用。现在,您有两个占位符,并且尝试绑定(bind)三个值。

所以尝试一下:

$sth = $dbh->prepare("SELECT users.userID,fname,lname,status FROM users INNER JOIN friends ON users.userID = friends.friendID WHERE friends.userID = ? AND ((friends.status LIKE 'group%' OR friends.status = 'friends') OR (users.status = ?) OR (users.userID = ?)) ORDER BY friends.status,lname,fname ASC");

关于如果我使用冒号,PHP 绑定(bind)参数数据库调用参数数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38548317/

相关文章:

php - 不工作 Laravel 多对多关系

php - 尝试将 img 居中但没有通用的修复方法

php - 如何使用 PHP 在 html 中使用 SELECT 标记查询我的 SQL 数据库

php - 交响乐问题。如何在 action.class 中使用 get_partial?

javascript - 默认勾选,如果不勾选则保持不勾选

mysql - SQL:如果子查询中存在或不存在多个值,则返回 true/false

mysql - 有趣的选择mysql

MySQL 将 1 个结果定义为 SELECT 查询的文本

php - 迭代数组中对象的问题

PHP和MYSQL支持版本升级