警告:mysql_connect():读取问候包时出错

Posted

技术标签:

【中文标题】警告:mysql_connect():读取问候包时出错【英文标题】:Warning: mysql_connect(): Error while reading greeting packet 【发布时间】:2015-07-15 00:59:43 【问题描述】:
<?php``
if(mysql_connect("localhost","root",""))
echo"connect";
else 
echo "not connect";
?>

这是我的代码,但它没有连接。将错误作为警告

警告:mysql_connect(): MySQL server has gone away in C:..\pro1.php on line 2

。第 2 行 C:..\pro1.php 中的 PID=2296

警告:mysql_connect(): MySQL server has gone away in C:..\pro1.php on line 2 连接不上

【问题讨论】:

你必须查看一些如何连接数据库的教程,这里有一个链接,你可以得到一些帮助w3schools.com/php/php_mysql_connect.asp在谷歌搜索教程和mysql已被弃用,所以使用mysqli或pdo进行数据库连接 有趣的是,您已经标记了mysqli,但没有使用它。嗯,这可能是更好的方法吗? ;) 【参考方案1】:

您可以尝试使用MySQLiPDO 及其准备好的语句以更安全。

如果您打算只使用 MySQL,请使用以下代码初始化您的数据库连接。

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) 
    die('Could not connect: ' . mysql_error());

echo 'Connected successfully';
mysql_close($link);
?>

参考见http://php.net/manual/en/function.mysql-connect.php

或者请使用 MySQLi

<?php
$con = mysqli_connect("localhost","my_user","my_password","my_db");

// Check connection
if (mysqli_connect_errno())
  
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  
?>

参考见http://php.net/manual/en/mysqli.construct.php

如果您考虑使用 PDO,请尝试

<?php
try 
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    foreach($dbh->query('SELECT * from FOO') as $row) 
        print_r($row);
    
    $dbh = null;
 catch (PDOException $e) 
    print "Error!: " . $e->getMessage() . "<br/>";
    die();

?>

参考见http://php.net/manual/en/pdo.connections.php

【讨论】:

【参考方案2】:
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

if ($mysqli->connect_error) 
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);

http://php.net/manual/en/mysqli.construct.php

【讨论】:

【参考方案3】:

在 php 打开标签后删除 '' 和 试试这样

  <?php
 $link = mysql_connect('localhost', 'root', '');
 if (!$link) 
 die('Not connected : ' . mysql_error());

$db_selected = mysql_select_db('dbname');   //your database name
if (!$db_selected) 
die ('Can\'t use foo : ' . mysql_error());

?>

【讨论】:

以上是关于警告:mysql_connect():读取问候包时出错的主要内容,如果未能解决你的问题,请参考以下文章

cakephp: 警告 (2): mysql_connect()

警告: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 连接)

加载 gdata 包时如何修复 Perl 警告消息?