我已经知道如果你想使用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 ";
}
?>
任何人都可以向我解释为什么会发生这种情况?
答案 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 ";
}
?>