【问题标题】:Fatal error: Call to a member function execute() on boolean in致命错误:在布尔值中调用成员函数 execute()
【发布时间】:2016-12-09 01:54:42
【问题描述】:

致命错误:在第 18 行的----布尔值上调用成员函数 execute()

我不断收到此错误。我想要发生的是,当您单击帖子上的删除按钮时,它将删除它。 这是第 18 行

$result->execute(array(':id' => $_GET['delpost']));

PHP

if (isset($_GET['delpost'])) { 

    $result = mysqli_query( $connection,'DELETE FROM blog WHERE id = :id') ;
    $result->execute(array(':id' => $_GET['delpost']));

    header('Location: blog.php?action=deleted');
    exit;
}

【问题讨论】:

  • mysqli_fetch_array()/mysqli_fetch_assoc()/mysqli_fetch_row() expects parameter 1 to be resource or mysqli_result, boolean given 的可能重复错误消息略有不同,但出于相同的原因和相同的根本原因。 mysqli_query() 失败并返回值 false。检查mysql_error()
  • 您使用的是mysqli 还是PDO?以: 开头的占位符仅适用于 PDO。
  • @David 问题是他应该打电话给mysqi_query,而他应该打电话给mysqli_prepare
  • @Barmar:我现在也看到了,是的。当然,mysql_error() 也会暴露出查询是在不使用参数的情况下执行的,所以对他自己的调试还是有用的:)
  • @David 可能会说:id 附近有语法错误,但我怀疑这对他找出问题有多大帮助。

标签: php


【解决方案1】:

您需要使用prepare() 来创建准备好的语句,而不是query。您还混合了 PDO 和 mysqli,这是行不通的。

如果您使用的是 PDO,则应该是:

$result = $connection->prepare('DELETE FROM blog WHERE id = :id');
$result->execute(array(':id' => $_GET['delpost']));

如果你使用的是mysqli,应该是:

$result = $connection->prepare('DELETE FROM blog WHERE id = ?');
$result->bind_param('i', $_GET['delpost']);
$result->execute();

【讨论】:

  • 必须置顶这个答案
【解决方案2】:

如果没有任何效果,请检查您是如何为表提供值的。写是这样的:

insert into `table_name`(`column_name`) values('values')

值使用单引号

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    相关资源
    最近更新 更多