检查是否连接到MySQL和数据库

时间:2014-03-15 18:13:50

标签: php mysql database

我遇到了一个PHP脚本问题,如果MySQL-Logindata有效,我想检查一下。我找到了mysql_ping()函数的某个地方,但它不能正常工作,因为它会在每种情况下都返回true,即使插入的数据完全错误。我该如何解决?

$verbindung = mysql_connect($_POST["mysql_host"], $_POST["mysql_user"],
$_POST["mysql_pwd"]);

if (!mysql_ping($verbindung)) {
    $break = true;
}
else {
    // Check here also via SQL, if database $_POST["mysql_db"] exists
}

2 个答案:

答案 0 :(得分:0)

这已经比它需要的更复杂,应该做正确的事情。所有用户名很可能工作的原因是MySQL默认情况下有一个匿名用户''@'localhost',它接受​​任何用户名。可能你想要删除该用户。 (DROP USER ''@'localhost',请确保您可以在执行此操作之前以其他用户身份登录,使用SHOW GRANTS查看您正在使用的用户)

为简化起见,如果出现错误,连接cal将失败,因此您不需要ping调用。如果您的生活连接时间较长,并且想要检查连接是否仍然有效,则可以使用ping

支票的简单表格可能如下所示:

$verbindung = new mysqli($_POST["mysql_host"], $_POST["mysql_user"], $_POST["mysql_pwd"]);
if (!$verbindung) {
    echo "Wrong settings";
}

请注意我改为mysqli insterface。 PHP中提供mysql函数的旧mysql_*扩展已弃用,不应再使用。

答案 1 :(得分:0)

我实际上找到了一个更好的mysqli_connect_errno()函数解决方案,并要求输入数据库名称和用户名。

$verbindung = @mysqli_connect((!empty($_POST["mysql_host"]) ? $_POST["mysql_host"] : 'localhost'),
    $_POST["mysql_user"], $_POST["mysql_pwd"], $_POST["mysql_db"]);

if (mysqli_connect_errno() || empty($_POST["mysql_user"]) || empty($_POST["mysql_db"])) {
    $break = true;
}