我是mysql的新手,如果有任何帮助,我们将不胜感激。我已经编写了以下函数来从电子邮件和密码匹配的数据库中提取用户ID,但它不起作用。如果我输入我的信息,它会返回一个用户ID 0,我的用户ID是19。
function correctPassword($db, $userID, $password){
$sql = "SELECT user_id FROM event_user WHERE user_email = '$userID' AND user_password = md5('$password')";
$_SESSION['userId'] = mysql_query($sql, $db);
if ($_SESSION['userId'] != 0)
return TRUE;
else
return FALSE;
}
你们专业人士有什么建议吗?
尝试这个
function correctPassword($db, $userID, $password){
$sql = "SELECT user_id FROM event_user WHERE user_email = '$userID' AND user_password = '" . md5($password) . "'";
$_SESSION['userId'] = mysql_query($sql, $db);
if ($_SESSION['userId'] != 0)
return TRUE;
else
return FALSE;
}
我在这类代码中犯的一些常见错误有:
1) 未使用session_start()
启动会话。
2) 不转义单引号。MySQL讨厌单引号,如果发现单引号,也不会介意打断您的查询。
在该函数中添加一个连接,并且mysql_query返回一个资源类型,因此不能将其放入SESSION
中。
function correctPassword($db, $userID, $password){
global $db;
$sql = "SELECT user_id FROM event_user WHERE user_email = '$userID' AND user_password = '" . md5('$password') . "'";
$result = mysql_query($sql, $db);
$row=mysql_fetch_assoc($result);
$_SESSION['userId']=$row['userId'];
if (isset($_SESSION['userId'])){
return TRUE;
}else{
return FALSE;
}
}
忽略准备进行注射的SQL医生。