为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3146593 2019-06-25 11:05:13
警告: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>";     }}
查看完整描述

3 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

正如评论中提到的,这是一个范围界定的问题。特别是,$con不在getPosts功能。

您应该将连接对象作为依赖项传入,例如

function getPosts(mysqli $con) {
    // etc

如果连接失败,我也强烈建议停止执行。像这样的东西就足够了

$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx");if (mysqli_connect_errno()) {
    throw new Exception(mysqli_connect_error(), mysqli_connect_errno());}getPosts($con);


查看完整回答
反对 回复 2019-06-25
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

在$con上使用全局范围,并将其放入getPosts()函数中,如下所示。

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>";
    }}


查看完整回答
反对 回复 2019-06-25
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

这个getPosts()函数似乎期待$con是全球性的,但你不能宣布它是全球性的。

很多程序员都把光秃秃的全局变量看作是一种“代码嗅觉”。在规模的另一端,可供选择的方法是始终在连接资源周围传递。两者之间的半路是一个单例调用,它总是返回相同的资源句柄。


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 1554 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信