好的,我一直在使用mysql与我的网站一起使用,但是它的部分语法并不顺利。我已经阅读了它,但我感觉还好,我仍然做错了......在下图中,我定义了数据库变量,然后尝试登录我的数据库,其中包含&#34列; ID" "用户名"和#34;密码"。然后我在我的表单中定义用户名和密码输入,在php中并要求数据库进行比较...我错过了什么?我觉得它不是将表单中的数据与数据库中的数据进行比较。即使我输错密码也能正常工作..
//Name of File: LoginCheck.php <--Called with the Login.php (which has a form on it)
//posts information to LoginCheck.php
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'blah');
define('DB_PASS', 'blah');
define('DB_NAME', 'Profiles');
$con = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if(!$con){
die('Could not connect. ' . '<br/>' . 'Error: ' . mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $con);
if(!$db_selected){
die('Could not select database: ' . DB_NAME . '<br/>' . 'Error: ' . mysql_error());
}
//defines login variables from the form.
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$login = mysql_query("SELECT * FROM Users WHERE Username = '$username' AND Password = '$password'", $con);
if(!$login){
echo 'Error: ' . mysql_error();
echo "Didn't log in. Not matching database intel.";
}else{
echo "Logged in matching database intel.";
}
mysql_close($con);
?>
答案 0 :(得分:3)
mysql_query()
只返回资源。然后,您可以使用该资源获取该数据或有关查询的更多信息。
您可以使用mysql_num_rows()
查看您的查询是否成功:
if(!mysql_num_rows($login)){
仅供参考,您应不以纯文本格式存储密码。这是一个巨大的安全禁忌。
Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
答案 1 :(得分:2)
应该是:
$login = mysql_query("SELECT * FROM Users WHERE Username = '$username' AND Password = '$password'", $con);
if(!$login){
echo 'Error: ' . mysql_error();
} elseif (mysql_num_rows($login) == 0) {
echo "Didn't log in. Not matching database intel.";
}else{
echo "Logged in matching database intel.";
}
找不到匹配项与错误不同。