我遇到了一个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
}
答案 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;
}