Php 警告:mysqli_query()要求参数1为mysqli,字符串在

Php 警告:mysqli_query()要求参数1为mysqli,字符串在,php,mysqli,Php,Mysqli,我得到警告: 警告:mysqli_query()要求参数1为mysqli,字符串在第6行的(…)中给出 我的代码在这里: <?php require_once 'conn.php'; $sql = "SELECT user_id, access_lvl, name FROM cms_users "; $result = mysqli_query($sql, $conn); 这正是错误地将参数传递给mysqli\u query()时的错误状态。假设$conn是您的mysqli连接在某一

我得到警告:

警告:mysqli_query()要求参数1为mysqli,字符串在第6行的(…)中给出

我的代码在这里:

<?php

require_once 'conn.php';

$sql = "SELECT user_id, access_lvl, name FROM cms_users ";
$result = mysqli_query($sql, $conn);

这正是错误地将参数传递给
mysqli\u query()
时的错误状态。假设
$conn
是您的mysqli连接在某一点上由
新的mysqli()生成的,那么它应该是:

$result = mysqli_query( $conn,$sql) or trigger_error(mysqli_error($conn)));

您调用它的方式是传递一个字符串,
$sql
作为第一个参数。

我已经晚了3年,但您需要做的就是交换
mysqli\u query()的参数。


我有这个问题,但在刷卡之后
$result=mysqli\u查询($sql,$conn)
$result=mysqli\u查询($conn,$sql)


虽然$result=mysqli\u查询($conn,$sql)是正确的方法,但我还是设法解决了这个错误

I var_dump()是$conn对象,在运行查询时它是一个set对象,但仍然返回“string-given”错误

我是在将$conn对象解析成一个函数后访问它的,我在整个项目中都是这样做的,没有错误

在函数中重新声明$conn对象,而不是将其传递到函数中,停止了错误,尽管这种行为在我的项目中的任何其他地方都不会发生。这也不是一个理想的解决方案

注意:我正在使用.env进行本地开发,这不会引起任何问题,并且有助于通过.git进行本地/远程部署

几个小时后,我真的相信这里有一个PHP错误,我使用的是7.3.0,但发生在7.2.5中,而且我肯定是将其解析为一个db连接对象,而不是字符串

只是为了提供信息,以防其他人碰到它。谢谢

另外,密码不应以明文形式存储在数据库中,这是一个主要的安全问题。如果作者还没有对此进行调整(我知道这是一篇老文章),那么阅读以下内容很重要:


您正在混合使用
mysqli\u
mysql\u
mysql\u error
不会为
mysqli\u
函数返回错误。可爱的漏洞。享受您的服务器pwn3d。@MarcB I不是一个downvoter,但Ray最初将其作为
mysql\u error()
使用,这不会显示在编辑中。@Fred ii-快速剪切和粘贴,看不到死亡消息的最右侧。我删除了它。@MarcB是的,这就是为什么他们不会出现,因为Ray在这段时间内还有5分钟的时间。@Ray OP的混合API
或die('无法查找用户信息;'。mysql_error())应读为
或die('无法查找用户信息;'。mysqli_错误($conn))。顺便说一句,我从不草率地投反对票@弗雷德二世-我会窃取你的评论并更新答案。
$result = mysqli_query($conn, $sql)