即使用户名错误,MySQL连接功能也会运行

时间:2015-04-24 15:48:32

标签: php mysql

我已经知道如果你想使用MySQL连接数据库,你必须提供正确的URL,用户名和密码,这是我的代码正常的事情:

<?php
$mysql_id = mysql_connect('localhost', 'root', '');
mysql_select_db('Booklet', $mysql_id);
if(!$mysql_id)
{
echo"cannot connect to database ";
}
?>

这段代码运行良好,但是如果我弄乱了root用户名,那么它仍然连接在这里是代码:

<?php
$mysql_id = mysql_connect('localhost', 'rot', '');
mysql_select_db('Booklet', $mysql_id);
if(!$mysql_id)
{
echo"cannot connect to database ";
}
?>

任何人都可以向我解释为什么会发生这种情况?

4 个答案:

答案 0 :(得分:2)

你从不打扰检查失败。你的代码只是假设成功并且失误了。

$mysql_id = mysql_connect('localhost', 'rot', '') or die(mysql_error());
                                                 ^^^^^^^^^^^^^^^^^^^^^^
mysql_select_db('Booklet', $mysql_id) or die(mysql_error());

所有mysql _ *()函数在失败时返回boolean false。你需要检查那个错误。永远不要假设数据库操作成功。总是假设失败,检查失败,并将成功视为一个惊喜。

答案 1 :(得分:2)

从PHP 5.5.0开始,不推荐使用mysql_ *函数,不应该使用进行编码。把它看作是一个爬行的僵尸,你不去亲吻它,做

您应该使用MySQLi或PDO对数据库进行操作。请不要再使用mysql_ *,你不想要那个。这就像要求在 Windows Milenium 上编码,地狱,甚至启动这件事都是一场噩梦。

无论如何,要回答你应该写的问题:

$mysql_id = mysql_connect('localhost', 'rot', '') or die(mysql_error());

或者更好的是,你应该看看MySqli的文档,并摆脱束缚。考虑一下,请。

答案 2 :(得分:0)

自PHP 5.5.0起,此扩展名已弃用,将来会被删除。相反,应使用 MySQLi PDO_MySQL 扩展名。

尝试通过添加mysql_error()这样的

来调试您的代码
$mysql_id = mysql_connect('localhost', 'rot', '');
mysql_select_db('Booklet', $mysql_id);


    echo " debug return:  " . mysql_error();

或者只是更新你的代码,如果你有最新版本的php&gt; 5.5.0

$mysql_id = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($link)); 

答案 3 :(得分:0)

使用新的MySQLi函数,您会在尝试连接时得到错误的回复,也可以将数据库作为第四个参数传递给您。所以你的代码看起来像这样:

<?php

    if($mysql_id = mysqli_connect('localhost', 'root', '', 'Booklet'))
    {
        /* do something like mysqli_query($mysql_id, ... */
    }
    else
    {
        echo"cannot connect to database ";
    }
?>