首页 >后端开发 >php教程 >为什么 `mysqli_query()` 返回'警告:mysqli_query() 期望参数 1 为 mysqli,给定 null”错误?

为什么 `mysqli_query()` 返回'警告:mysqli_query() 期望参数 1 为 mysqli,给定 null”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-05 00:53:14258浏览

Why does `mysqli_query()` return a

警告:了解 mysqli_query() 参数错误

在 PHP 中使用 mysqli_query() 时,确保第一个参数是一个至关重要表示数据库连接的有效 mysqli 对象。但是,如果遇到错误“警告:mysqli_query() 期望参数 1 为 mysqli,给出 null”,则表明传递给函数的第一个参数不是 mysqli 对象。

检查代码

在您提供的代码中,您有一个名为 getPosts() 的函数。此函数尝试查询名为 Blog 的数据库表。但是,在 getPosts() 内的 mysqli_query() 调用中,未显式传递第一个参数。因此,PHP 假定 $con 的值(在函数外部声明)作为第一个参数。但是, $con 不在 getPosts() 的范围内,因此返回 null。

解决错误

要解决此问题,您有两个选择:

  1. **全球化 $con 变量:** 您可以使用全局变量在 getPosts() 中将 $con 变量设为全局变量$con;宣言。这将告诉 PHP 在函数外部查找 $con,使其可以在 getPosts() 中访问。
  2. **将 $con 变量作为参数传递:** 更好的方法是传递 $con 对象作为 getPosts() 函数的参数。这确保 getPosts() 可以直接访问数据库连接,从而无需全局作用域。

示例:

function getPosts(mysqli $con) {
    // ... same code as before
}

// Connect to the database
$con = mysqli_connect("localhost", "xxxx", "xxxx", "xxxxx");
// Call getPosts() with the connection as a parameter
getPosts($con);

其他建议

还建议处理任何潜在的错误可能发生在数据库操作过程中。您可以按如下方式显式启用错误报告:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions

如果发生任何错误,这将引发异常,从而允许您在代码中采取适当的操作。

以上是为什么 `mysqli_query()` 返回'警告:mysqli_query() 期望参数 1 为 mysqli,给定 null”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn