在我的数据库中使用mysql确认数据的问题

时间:2014-04-11 01:54:47

标签: php mysql

好的,我一直在使用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);
?>

2 个答案:

答案 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,并使用PDOMySQLi - 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.";
}

找不到匹配项与错误不同。