PHP:致命错误:未捕获的错误:在布尔值上调用成员函数 execute() [重复]

Posted

技术标签:

【中文标题】PHP:致命错误:未捕获的错误:在布尔值上调用成员函数 execute() [重复]【英文标题】:PHP: Fatal error: Uncaught Error: Call to a member function execute() on boolean [duplicate] 【发布时间】:2019-11-27 05:22:54 【问题描述】:

帮我解决这个错误

php 脚本:

在包含 $stmt->execute($params) 的行中发现错误

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$passwd = filter_input(INPUT_POST, 'passwd', FILTER_SANITIZE_STRING);

$sql = "SELECT * FROM users WHERE username=:username";
$stmt = $db->prepare($sql);

// bind parameter ke query
$params = array(
    ":username" => $username

);

$stmt->execute($params);

$user = $stmt->fetch(PDO::FETCH_ASSOC);

【问题讨论】:

你的连接是如何初始化的?抛出的异常消息是什么? 【参考方案1】:

你可以试试这个

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$passwd = filter_input(INPUT_POST, 'passwd', FILTER_SANITIZE_STRING);
$sql = "SELECT * FROM users WHERE username=:username";
$stmt = $db->prepare($sql);
$stmt->bindParam('username',$username);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);

【讨论】:

因为它似乎是 $db->prepare($sql) 返回 false 而不是语句,所以这只会让您的 "Call to a member function bindParam() on boolean" 代替。您只是移动了错误。

以上是关于PHP:致命错误:未捕获的错误:在布尔值上调用成员函数 execute() [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 致命错误:在布尔值上调用成员函数 result()

PHP“致命错误:未捕获错误:调用成员函数prepare()为null”

PHP 致命错误:未捕获的错误:调用字符串中的成员函数 diff()

致命错误:未捕获的错误:在 null 上调用成员函数 select()

致命错误:未捕获的错误:在 C:\xampp\phpMyAdmin\libraries\classes\DatabaseInterface.php:1544 中的 null 上调用成员函数存在()

致命错误:未捕获错误:在null上调用成员函数select()