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`,?)";
    A+
发布日期:2020年09月03日 15:18:30  所属分类:Mysql
最后更新时间:2020-09-03 15:18:30
评分: (16 票;平均数4.00 ;最高评分 5 ;用户总数16;总得分 64;百分比80.00)
付杰
wordpress站群服务 泛解析二级域名 二级目录站群
wordpress站群服务 泛解析二级域名 二级目录站群
  • ¥ 1999.9元
  • 市场价:4800元
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
  • ¥ 1.0元
  • 市场价:9.9元
PHP运行环境 wamp lamp lnmp 安装 配置 搭建
PHP运行环境 wamp lamp lnmp 安装 配置 搭建
  • ¥ 9.9元
  • 市场价:49.9元
wp discux 帝国 dedecms phpcms等快速建站
wp discux 帝国 dedecms phpcms等快速建站
  • ¥ 99.9元
  • 市场价:499.9元

发表评论

:?: :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,因此,细节很重要。我就少了一个连接符,就报错了,我还搞了半天。