mysqli_connect没有连接到localhost

时间:2014-03-16 12:04:15

标签: php mysql

如标题所示,使用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。

6 个答案:

答案 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(...)行中的引号与其他代码行中的引号不同。当你写出你的问题时,这可能就是堆栈溢出中发生的事情,但如果不是,那么你的代码中也会出现那些不同的引号,那么你可能需要将它们更改为与后面的代码相同的引号。