【问题标题】:mysql_connect always allows accessmysql_connect 总是允许访问
【发布时间】:2012-08-23 05:12:02
【问题描述】:

我正在尝试使用使用 XAMPP 设置的本地测试服务器连接到在我的本地计算机上运行的 mySQL 数据库。我只是使用没有分配密码的root帐户。我尝试如下,一切似乎都正常。我的信息得到了回应,说我已成功连接。然后我尝试通过在主机、用户名或密码中输入其他任何内容来强制出错,但它仍然显示“连接成功”。

这是我用来连接的代码:

<?php
$db_host = "localhost";
$db_username = "root";
$db_password = "";

$myConn = mysql_connect($db_host, $db_username, $db_password) or die('Connection error: '.mysql_error());
echo 'connection successful';
?>

我想知道是我自己还是我正在使用的 apache/mySQL 安装导致了这种荒谬。

【问题讨论】:

    标签: php mysql xampp mysql-connect


    【解决方案1】:

    您的安装一定搞砸了:

    marc@panic:~$ php -a
    php > $x = mysql_connect('bleargh', 'foo', 'bar') or die(mysql_error());
    PHP Warning:  mysql_connect(): Unknown MySQL server host 'bleargh' (2) in php shell code on line 1
    Unknown MySQL server host 'bleargh' (2)marc@panic:~$ 
    

    我能想到的只是你有一个 DNS 服务器,它为 ALL 查找返回一个有效地址,导致所有主机名都得到解析。

    【讨论】:

    • 如果 error_level 为 E_ERROR 则不显示警告,并且 display_errors 可能会关闭。
    • 没关系。即使没有显示错误消息,mysql_connect() 仍然会在错误时返回 false,这应该会触发 or die()。 PHP 可能不是最好的,但即使是 PHP 也会承认错误,不像(比如说)VB 的on error resume next。
    【解决方案2】:

    试试这个

    $db_host = "localhost";
    $db_username = "root";
    $db_password = "";
    $con = mysql_connect($db_host,$db_username,$db_passwd);
    if (!$con)
     {
     die('Could not connect: ' . mysql_error());
     }
    else
      echo 'connection successful';
      mysql_close($con);
    ?>
    

    【讨论】:

    • 类似于@Burhan 给出的答案。我在这里没有任何成功。
    【解决方案3】:

    它将始终回显'connection successful',因为您没有检查连接状态。

    if (!$myConn) {
       echo 'Sorry, there was an error '.mysql_error();
    } else {
       echo 'connection successful';
    }
    

    根据您执行代码的方式,您可能会遇到以下情况:

    如果使用相同的参数对 mysql_connect() 进行第二次调用, 不会建立新的链接,而是建立链接标识符 已经打开的链接将被返回。 new_link 参数 修改此行为并使 mysql_connect() 始终打开一个新的 链接,即使之前使用相同的方法调用了 mysql_connect() 参数。在 SQL 安全模式下,该参数被忽略。

    所以,要么做一个明确的检查,要么:

    $myConn = mysql_connect($db_host, $db_username, $db_password, true) or die('Connection error: '.mysql_error());

    【讨论】:

    • 我已经尝试过了,它仍然打印“连接成功”。据我所知,如果我连接或死亡,它不应该在被杀死后执行。
    • 这是与此服务器建立的第一个连接。我想我可以尝试重新安装服务器软件。
    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 2011-07-28
    • 2017-05-22
    • 2020-05-03
    相关资源
    最近更新 更多