mysqli_stmt::bind_result() 中的绑定变量不匹配
在 PHP 中,当使用 mysqli_stmt::bind_result() 执行准备好的语句时,绑定变量的数量必须与结果集中的字段数量相对应。如果它们不匹配,则会抛出错误“mysqli_stmt::bind_result(): Number of Bind Variable does not match number of fields in prepared statements”。
要解决此问题,请确保该数量bind_result() 中的绑定变量的数量与查询返回的列数一致。考虑以下 PHP 代码:
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username); // Incorrect number of bind variables $stmt->fetch();
在此示例中,准备好的语句检索两列:用户名和密码。然而,bind_result() 中只指定了一个绑定变量 $username。要更正此问题,请为 $password 添加第二个绑定变量:
$stmt->bind_result($username, $password); // Correct number of bind variables
SELECT 语句的语法为: SELECT field1, field2, ... fieldN FROM table_name WHERE .... 每个字段必须分隔开用逗号,而不是 AND 条件。
以上是当绑定变量的数量与结果集列不匹配时,为什么`mysqli_stmt::bind_result()`会抛出错误?的详细内容。更多信息请关注PHP中文网其他相关文章!