![](/img/trans.png)
[英]Warning: mysqli_query() expects parameter 1 to be mysqli, null given in
[英]Warning: mysqli_query() expects parameter 1 to be mysqli, null given in
我正在尝试构建一个简单的自定义 CMS,但出现错误:
警告:mysqli_query() 期望参数 1 为 MySQLi,null 给定
为什么会出现此错误? 我所有的代码都已经是 MySQLi,我使用的是两个参数,而不是一个。
$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx");
//check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL:" . mysqli_connect_error();
}
function getPosts() {
$query = mysqli_query($con,"SELECT * FROM Blog");
while($row = mysqli_fetch_array($query))
{
echo "<div class=\"blogsnippet\">";
echo "<h4>" . $row['Title'] . "</h4>" . $row['SubHeading'];
echo "</div>";
}
}
正如评论中提到的,这是一个范围界定问题。 具体来说, $con
不在getPosts
function 中的 scope 中。
您应该将连接 object 作为依赖项传递,例如
function getPosts(mysqli $con) {
// etc
如果您的连接失败或发生错误,我也强烈建议停止执行。 像这样的东西就足够了
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions
$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx");
getPosts($con);
在 $con 上使用 global scope 并将其放入 getPosts() function 中,就像这样。
function getPosts() {
global $con;
$query = mysqli_query($con,"SELECT * FROM Blog");
while($row = mysqli_fetch_array($query))
{
echo "<div class=\"blogsnippet\">";
echo "<h4>" . $row['Title'] . "</h4>" . $row['SubHeading'];
echo "</div>";
}
}
getPosts()
function 似乎期望$con
是全局的,但您并没有这样声明它。
许多程序员将秃头的全局变量视为“代码气味”。 另一端的替代方案是始终绕过连接资源。 介于两者之间的是 singleton 调用,它总是返回相同的资源句柄。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.