php - MySQLi PHP 扩展问题

标签 php mysqli

每当查询完成执行时,我知道您应该释放结果。这是我为运行简单查询而构建的类的片段。有人可以告诉我哪里出错了吗?正确输入后,查询将成功运行。只是我的页面没有像它应该那样重新加载,但它给了我这些错误...

Fatal error: Call to a member function free() on a non-object in <file> on <line>

... 这个错误...

Fatal error: Call to a member function close() on a non-object in <file> on <line>

这里是我的代码的简化版本:

public function query($query) {
  try {
    if ($result = $this->connection->query($query, MYSQLI_USE_RESULT)) {
      $result->free();  //Problems here
      $result->close(); //Problems here
                
      return $result;
    } else {
      $result->free();  //Problems here
      $result->close(); //Problems here
      
      throw new Exception("The query was invalid");
    }
  } catch (Exception $e) {
    die($e->getMessage());
  }
}

最佳答案

如果我点击您的手册链接,会提到有关返回值的内容

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a result object. For other successful queries mysqli_query() will return TRUE.

特别是你不处理这两种情况 true 和更重要的 false

if ($result = $this->connection->query($query, MYSQLI_USE_RESULT)) {
  $result->free();  // Probably call "free()" on true
  $result->close();

  return $result;
} else {  // <-- false, null, 0 or ""
  $result->free();  // Probably call "free()" on false
  $result->close();

  throw new Exception("The query was invalid");
}

我不知道你的情况下 $query 是什么,但是 query() 只会返回一个结果,if是一个(SELECT-查询)。

关于php - MySQLi PHP 扩展问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6377668/

上一篇:mysql求和问题

下一篇:MySQL表更新

相关文章:

php - 我应该多次调用 dns_get_record() 还是使用 DNS_ANY 调用一次?

PHP:如何根据 MySQL 类型转换 mysqli_result->fetch_object() 的属性?

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

php - 通过 ANT 获取和使用父目录

php - WooCommerce 如何删除订单操作 (WordPress)

php - 获取当年的最后一天作为日期

php - 需要帮助将此 php mysql 代码转换为 mysqli

sql - 根据现有日期列(MYSQL)为 'week ending date' 创建新列

php - 无法在MySQL中使用变量?

php - 如何在 30 分钟后使 PHP session 过期?