如标题所示,使用mysqli_connect时出现以下错误:
警告:mysqli_connect():php_network_getaddresses:getaddrinfo失败:提供了nodename或servname,或者在linez 2上的/Users/username/Sites/test.php中未知
警告:mysqli_connect():( HY000 / 2002):php_network_getaddresses:getaddrinfo失败:提供了nodename或servname,或者在第2行的/Users/username/Sites/test.php中未知 无法连接:
<?php
$link = mysqli_connect(‘localhost’, ‘username’, ‘password’);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
我的防火墙已关闭且apache2已打开,我可以查看localhost / Username / Sites / test.php以及使用localhost登录mysql。
答案 0 :(得分:3)
从哪里带来这些报价?你应该使用单引号。
试试这个:
$link = mysqli_connect('localhost', 'username', 'password'); //you forgot the database
为什么要在mysqli和mysql之间混合使用?
就像连接数据库一样:
$link = mysqli_connect("localhost","username","password","database") or die("Error " . mysqli_error($link));
请在此处阅读以下文档http://se2.php.net/mysqli_select_db
答案 1 :(得分:1)
如果您正在使用内置于OS X中的textedit应用,那么禁用 / 取消选中来自TextEdit首选项面板中的“智能引号”功能,然后您将不得不替换代码中的所有现有引号。
答案 2 :(得分:1)
我也遇到了这个问题,但是所有答案都无济于事。
尽管有很多答案,但根据文档https://www.php.net/manual/en/mysqli.construct.php,数据库名称不是强制性的第4个参数。
对我来说,解决的办法是再次检查数据库主机,因为在我的代码中它是动态的,并且错误地选择了远程数据库主机而不是本地主机。
system/usr/share/<target app name>
(创建虚拟主机后,必须将其添加到$mysqli = IS_LOCAL ?
new mysqli($settings->localDBhost, $settings->localUser, $settings->localPassword)
: new mysqli($settings->DBhost, $settings->DBuser, $settings->DBpassword);
常量的条件中)
答案 3 :(得分:0)
$link = mysqli_connect(‘localhost’, ‘username’, ‘password’);
应该是
$link = mysqli_connect(‘localhost’, ‘username’, ‘password’, 'yourdatabase');
答案 4 :(得分:0)
尝试:
$dbc = mysqli_connect('localhost', 'username', 'password', 'phonehome','3306','/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock') OR die('Could not connect to database. Verify connection.php settings and SQL DB is running. Error: '.mysqli_connect_error());
这是定义您的主机名,端口,用户名,密码,数据库和mySQL套接字,它对我有用。
答案 5 :(得分:0)
出于某种原因,我记不起来了(我想我在其他地方就读过它了,实际上),当你使用mysqli()连接到'localhost'
时,你实际上必须指定你是什么端口号连接:
$dbconn = new mysqli('localhost:3306', /*your username*/, /*your password*/, /*your database name*/);
3306,如果我没记错的话,是默认端口,但即便如此,你需要在这种情况下指定 - 实际上只有当你尝试连接localhost时,但由于某种原因它就是这样。
另外 - 我注意到,在原始代码中,mysqli_connect(...)
行中的引号与其他代码行中的引号不同。当你写出你的问题时,这可能就是堆栈溢出中发生的事情,但如果不是,那么你的代码中也会出现那些不同的引号,那么你可能需要将它们更改为与后面的代码相同的引号。