猿问

警告:mysqli_query()期望参数1为mysqli,在

警告:mysqli_query()期望参数1为mysqli,在

我正在尝试构建一个简单的自定义CMS,但是我得到了一个错误:

警告:mysqli_query()期望参数1为MySQLi,在

我为什么要犯这个错误?我的所有代码都是MySQLi,我使用的是两个参数,而不是一个。

$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx");//check connectionif (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>";
    }}


慕妹3146593
浏览 1555回答 3
3回答

慕田峪4524236

正如评论中提到的,这是一个范围界定的问题。特别是,$con不在getPosts功能。您应该将连接对象作为依赖项传入,例如function&nbsp;getPosts(mysqli&nbsp;$con)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;etc如果连接失败,我也强烈建议停止执行。像这样的东西就足够了$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx");if&nbsp;(mysqli_connect_errno())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Exception(mysqli_connect_error(),&nbsp;mysqli_connect_errno());}getPosts($con);

阿波罗的战车

在$con上使用全局范围,并将其放入getPosts()函数中,如下所示。function&nbsp;getPosts()&nbsp;{global&nbsp;$con;$query&nbsp;=&nbsp;mysqli_query($con,"SELECT&nbsp;*&nbsp;FROM&nbsp;Blog");while($row&nbsp;=&nbsp;mysqli_fetch_array($query)) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"<div&nbsp;class=\"blogsnippet\">"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"<h4>"&nbsp;.&nbsp;$row['Title']&nbsp;.&nbsp;"</h4>"&nbsp;.&nbsp;$row['SubHeading']; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"</div>"; &nbsp;&nbsp;&nbsp;&nbsp;}}

qq_花开花谢_0

这个getPosts()函数似乎期待$con是全球性的,但你不能宣布它是全球性的。很多程序员都把光秃秃的全局变量看作是一种“代码嗅觉”。在规模的另一端,可供选择的方法是始终在连接资源周围传递。两者之间的半路是一个单例调用,它总是返回相同的资源句柄。
随时随地看视频慕课网APP
我要回答