PHP代码连接MySQL报错:mysqli_connect及mysqli_query错误如何解决?
嘿,我来帮你拆解并解决这两个错误~
首先得明确:第二个错误是因为第一个数据库连接失败直接导致的——当mysqli_connect()连不上数据库时,它会返回false(布尔值),而mysqli_query()要求第一个参数必须是有效的MySQL连接对象,自然就会抛出"expects parameter 1 to be mysqli, boolean given"的报错。咱们先搞定最核心的连接问题:
1. 修复 "No such file or directory" 连接错误
这个报错在MAMP/MAMP Stack环境里特别常见,根源是PHP默认查找的MySQL socket文件路径,和MAMP实际的socket路径不匹配。有两种简单的解决办法:
方式一:用127.0.0.1代替localhost
把连接代码里的"localhost"换成"127.0.0.1",这样PHP会改用TCP/IP协议连接MySQL,绕开socket文件路径的问题:
<?php $conn = mysqli_connect("127.0.0.1", "root", "111111", "你的数据库名");
方式二:指定正确的socket路径
如果你坚持想用localhost,就在连接时手动指定MAMP的socket路径。MAMP Stack 7.1.10的socket通常在/Applications/mampstack-7.1.10-1/mysql/tmp/mysql.sock(可以去这个路径确认文件是否存在),修改代码如下:
<?php $conn = mysqli_connect("localhost", "root", "111111", "你的数据库名", null, "/Applications/mampstack-7.1.10-1/mysql/tmp/mysql.sock");
2. 补全缺失的数据库名和表名
你的代码里"???"(数据库名)和"??"(表名)都是占位符,必须替换成你实际创建的数据库名称和表名称!不然就算连接成功,插入操作也会失败。比如你的数据库叫my_blog,表叫posts,代码要改成:
mysqli_query($conn, " INSERT INTO posts ( title, description, created ) VALUES ( 'MySQL', 'MySQL is ....', NOW() )");
3. 加个错误调试(可选但强烈推荐)
为了以后排查问题更方便,建议在代码里加上连接和插入的错误检查逻辑,能直接看到具体的错误信息:
<?php $conn = mysqli_connect("127.0.0.1", "root", "111111", "你的数据库名"); // 检查连接是否成功 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } // 执行插入并验证结果 $sql = "INSERT INTO posts (title, description, created) VALUES ('MySQL', 'MySQL is ....', NOW())"; if (mysqli_query($conn, $sql)) { echo "新记录插入成功!"; } else { echo "插入失败: " . $sql . "<br>" . mysqli_error($conn); } // 记得关闭连接 mysqli_close($conn); ?>
按照上面的步骤调整后,应该就能顺利运行啦~
内容的提问来源于stack exchange,提问作者부건혁

