Fatal error: Uncaught Error: Call to a member function bind_param() on bool in 原因与解决方法

今天写好代码后,结果运行后,SQL语句报了如下错误提示:

Fatal error: Uncaught Error: Call to a member function bind_param() on bool in E:\phpstudy_pro\WWW\453535\admin\model\tag.php:70 Stack trace: #0 E:\phpstudy_pro\WWW\453535\admin\controller\article.php(254): TagSql->article_edit_tag_select(Object(mysqli), '23,24,25,26,27') #1 E:\phpstudy_pro\WWW\453535\admin\index.php(23): require_once('E:\\phpstudy_pro...') #2 {main} thrown in E:\phpstudy_pro\WWW\453535\admin\model\tag.php on line 70

Fatal error: Uncaught Error: Call to a member function bind_param() on bool in

 

原因:

上面这个错误的大概意思就是在 bind_param 处发生了错误,一般该句的上一句代码都是类似于:$stmt = $db->prepare($query) 这种,因为这句没有执行成功,所以会在 bind_param 处发生错误,原因大多都是在$query这里,即sql语句不正确。

 

解决方法

知道了原因,解决就容易多了。我们只需要修正了sql语句的问题后,最终也就解决这个问题了

 

简单的来谈谈我是如何解决的?我长话短简说一下思路吧!

 

1、以下是我报错部份的具体代码:

public function article_edit_tag_select($mysqli,$tag_id,$name=''){
        $sql_select = "SELECT `name` FROM `tag` WHERE FIND_IN_SET(`tag`,?)";
        $stmt=$mysqli->prepare($sql_select);
        $stmt->bind_param('s',$tag_id);
        $stmt->execute();
        $stmt->bind_result($name);
        $str= '';
        while ($stmt->fetch()) {
            $str .= $name.",";
        }
        return $str;
    }

 

2、我仔细看了一下是我的SQL语句写的有问题,tag表根本没有tag这个字段,FIND_IN_SET就找不到。正确写法如下:

$sql_select = "SELECT `name` FROM `tag` WHERE FIND_IN_SET(`id`,?)";

 


 

今天我还发现一个问题,以下这种SQL写法也是会提示这个错误的,类似:COUNT(*) 这种会直接报错。

 $sql = "SELECT `id`,COUNT('id') AS `count` FROM `tag` WHERE `name` = ?";
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param("s",$name);
        $stmt->execute();
        $stmt->bind_result($id,$count);
    A+
发布日期:2020年09月03日 15:18:30  所属分类:MySQL
最后更新时间:2021-07-05 15:15:56
付杰
  • ¥ 298.0元
  • 市场价:398.0元
  • ¥ 499.0元
  • 市场价:499.0元
  • ¥ 199.0元
  • 市场价:179.0元
  • ¥ 1999.9元
  • 市场价:8999元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  0   博主  0

  1. 头像 奔跑路上的小艾 1

    今天我也遇到了这个问题。按照博主说的,主要就是要SQL语句有问题,我仔细看了一下代码,果然出错了,具体如下:

     $sql_insert_into = "INSERT INTO `user` (`name`, `email`, `nickname`,  `avatarthumbnail ` ) VALUES (?,?,?,?)";
            $stmt=$mysqli->prepare( $sql_insert_into);
            $stmt->bind_param('ssss',$name,$email,$nickname,$avatarthumbnail);
            $stmt->execute();
            $id = $stmt->insert_id;//得到插入返回的ID

    原因:
    我的user表中,avatarthumbnail字段是没有的,正确的字段是avatar-thumbnail,因此,细节很重要。我就少了一个连接符,就报错了,我还搞了半天。