警告:mysql_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known

Posted

技术标签:

【中文标题】警告:mysql_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known【英文标题】:Warning: mysql_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known 【发布时间】:2015-09-25 23:23:51 【问题描述】:

我正在尝试使用 php 连接到 localhost 数据库。

但是显示出来了

警告:mysql_connect():php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在第 7 行的 C:\xampp2\htdocs\wikifiesto\wf-insertcase.php 中

警告:mysql_connect():php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在第 7 行的 C:\xampp2\htdocs\wikifiesto\wf-insertcase.php 连接数据库时出错

server、user、pass的结构是localhost、pma、''

这是我的代码,名为“wf-insertcase.php”:

<?php
define('dbuser', 'pma');
define('dbpass', '');
define('dbserver', 'localhost');
define('dbname', 'wikifiesto');

$conn = mysql_connect(dbuser, dbpass, dbserver, dbname);

if (!$conn) 
    die('error connecting to database');


echo 'you have created case';
?>

【问题讨论】:

【参考方案1】:

您的函数中有错误的参数顺序。数据库服务器必须是第一个参数。

$conn = mysql_connect(dbserver, dbuser, dbpass);

此处不允许使用数据库名称,请使用 mysql_select_db(dbname)

所有 mysql_* 都已弃用,请参阅 http://php.net/manual/en/function.mysql-connect.php 和 MySQLi 扩展。

$conn = mysqli_connect(dbserver, dbuser, dbpass, dbname);
             ^ 

【讨论】:

【参考方案2】:

由于未正确设置“主机”而出现“未知主机”警告。

请替换以下代码行

$conn = mysql_connect(dbuser, dbpass, dbserver, dbname);

if (!$conn) 
    die('error connecting to database');

$conn = mysql_connect(dbserver,dbuser,dbpass);

if (!$conn)
    die('error connecting to database');
else
    mysql_select_db(dbname, $conn);

【讨论】:

【参考方案3】:

它很快就会被破坏,因为这些函数是 deprecated 并且很快就会从 PHP 中删除。

如果您仍想使用它们,请使用mysql_connect的正确顺序

$mysql_handler = mysql_connect($host, $user,  $pass);
mysql_select_db($database_name, $mysql_handler);

【讨论】:

【参考方案4】:

Mysql

<?php
$dbuser = 'pma';
$dbpass = '';
$dbserver = 'localhost';
$dbname = 'wikifiesto';


$conn = mysql_connect($dbserver, $dbuser, $dbpass);//Connecting to localhost

$db = mysql_select_db($dbname, $conn);//connecting database

mysqli

$conn = mysqli_connect($dbserver,$dbuser,$dbpass,$dbname)//MySQLi Procedural

【讨论】:

【参考方案5】:

使用 mysqli 代替 mysql 已弃用

<?php
define('DBUSER', 'pma');
define('DBPASS', '');
define('DBSERVER', 'localhost');
define('DBNAME', 'wikifiesto');

$conn = new mysqli(DBSERVER, DBUSER, DBPASS, DBNAME);

if (!$conn) 
    die('error connecting to database');


echo 'you have created case';
?>

您有一些以下非标准的事情/错误

    常量名称必须大写 用mysql代替mysqli

    参数的顺序必须为

    主持人 数据库用户 db 用户通行证 数据库名称

【讨论】:

以上是关于警告:mysql_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known的主要内容,如果未能解决你的问题,请参考以下文章

警告:mysql_connect():用户'root'@'localhost'的访问被拒绝(使用密码:NO)[重复]

警告:mysql_connect(): 无法通过套接字'/tmp/mysql.sock' (2) 连接到本地 MySQL 服务器

警告:mysql_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known

警告:mysql_connect(): [2002] 没有这样的文件或目录(试图通过 unix:///tmp/mysql.sock 连接)

解决Warning: mysql_connect(): Headers and client library minor version mismatch. 警告

抑制 PDO 警告