PHP 警告:mysqli_stmt::bind_param():变量数与准备语句中的参数数不匹配

标签 php mysqli prepared-statement

不确定为什么我会收到此 PHP 警告消息。准备好的语句中似乎有四个参数,bind_param() 中也有四个变量。谢谢你的帮助!

  if($stmt = $mysqli -> prepare("SELECT url, month, year, cover_image FROM back_issues ORDER BY year DESC, month DESC")) {
   $stmt -> bind_param("ssis", $url, $month, $year, $cover_image);

   $stmt -> execute();

   $stmt -> bind_result($url, $month, $year, $cover_image);

   $stmt -> fetch();

   while ($stmt->fetch()) {
     echo "<li class='item'><a href='$url'><img src='$cover_image' alt='$cover_image' width='' height='' /></a><br /><span class='monthIssue'>$month $year</span></li>";
   }

   $stmt -> close();
   $mysqli -> close();

 }

最佳答案

if($stmt = $mysqli -> prepare("SELECT url, month, year, cover_image FROM back_issues ORDER BY year DESC, month DESC")) {
   $stmt -> bind_param("ssis", $url, $month, $year, $cover_image);
   [...]
}

这些行没有任何意义!如果你想使用参数,你必须将它们用于 where 条件或类似条件,非常像:

$mysqli->prepare("SELECT * FROM back_issues WHERE url =? AND month =? AND year =? and cover_image = ?");
$stmt->bind_param("ssis", $url, $month, $year, $cover_image);

如果您没有任何占位符与参数绑定(bind),bind_param() 方法将产生您遇到的错误。此外,该 IF 语句应该做什么? 如果您想验证该查询是否产生任何结果,您必须先运行它,然后再进行验证。

关于PHP 警告:mysqli_stmt::bind_param():变量数与准备语句中的参数数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16865151/

相关文章:

php - 在mysql中插入上次登录

php - mysqli_query() 期望参数 2 为字符串

java - 将元组数组发送到准备好的语句

php - 查看数据库 mysql 中的转义字符?

php - 登录用户/使用 PDO 启动 session

php - 如何使用 WHERE 子句中的一系列值从表中选择多行?

php - 处理多个表,php

php - 多搜索查询php

php - MySQL:用另一个表中的行替换一个表中的行

Java 准备语句语法