网站转用mysqli后出现mysqli_query()参数错误,求助排查
排查 mysqli_query() 参数为 null 的错误
这个错误的核心原因有两个,咱们一步步来解决:
1. 数据库连接对象 $link 未正确初始化
警告里说「parameter 1 to be mysqli, null given」,意思是你传给mysqli_query()的第一个参数$link是null——也就是你还没成功建立数据库连接,或者连接代码出了问题。
你需要确保在执行这段查询代码之前,已经正确创建了mysqli连接,并且把连接对象赋值给了$link。比如标准的连接代码应该是这样的:
// 替换成你的数据库信息 $host = 'localhost'; $user = '你的数据库用户名'; $pass = '你的数据库密码'; $dbname = '你的数据库名'; // 建立连接 $link = mysqli_connect($host, $user, $pass, $dbname); // 检查连接是否成功 if (!$link) { die('数据库连接失败: ' . mysqli_connect_error()); }
把这段代码放在你的查询代码之前,确认连接没有报错。如果连接失败,$link就会是null,直接导致后续的查询报错。
2. SQL语句变量引用错误
看你的代码:
$MySQLi = "SELECT configValLong FROM storeadmin WHERE configVar = 'controlRec' AND adminType = 'C' "; $rs = mysqli_query($link,MySQLi) or die(mysqli_connect_error());
这里调用mysqli_query()的时候,第二个参数写的是MySQLi(没有$符号),PHP会把它当成一个未定义的常量,而不是你之前定义的$MySQLi变量。这会导致SQL语句无效,同时也会加重连接参数的问题。
修复成这样:
$rs = mysqli_query($link, $MySQLi) or die('查询错误: ' . mysqli_error($link));
另外,这里的错误处理用mysqli_connect_error()不太合适,换成mysqli_error($link)能获取到查询相关的具体错误信息,更方便排查问题。
额外的优化建议
- 尽量别用
$MySQLi这种和扩展同名的变量名,换成$sqlControlRec这类有意义的名字,避免混淆。 - 开发阶段开启PHP的错误提示:
error_reporting(E_ALL); ini_set('display_errors', 1);
这样能看到更多细节错误,帮你更快定位问题。
内容的提问来源于stack exchange,提问作者Trixx
相关产品推荐
相关产品推荐

