mysqli_stmt::bind_result():绑定变量与准备好的语句字段不匹配
问题:
当尝试执行准备好的语句时mysqli_stmt,我遇到错误:“mysqli_stmt::bind_result():绑定变量的数量与准备好的语句中的字段数量不匹配。”为什么我会收到此错误?
代码示例:
$mysqli = new mysqli("localhost", "root", "", "security"); $stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username); $stmt->fetch();
答案:
您遇到的错误当bind_result() 中指定的变量数与准备好的语句查询返回的列数不匹配时,会发生这种情况。在您的示例中,您尝试将两个变量绑定到仅返回一列的查询。
要解决此问题,应以正确的操作格式编写查询。选择多个字段的正确语法是用逗号分隔它们,而不是 AND:
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
纠正查询后,可以使用 bind_result() 方法将变量正确绑定到结果:
$stmt->bind_result($username, $password);
以上是为什么 `mysqli_stmt::bind_result()` 会抛出'绑定变量不匹配”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!