当我尝试使用我的功能时遇到一个错误,我不知道如何解决它。
function is_valid($email_e, $email_code_e, $username_e) {
$email = mysql_real_escape_string($email_e);
$email_code = mysql_real_escape_string($email_code_e);
$username = sanitize($username_e);
return (mysql_result
(mysql_query
("SELECT COUNT(*) FROM `users`
WHERE `username` = $username
AND `email_code` = $email_code
AND `email` = $email"), 0) == 1) ? true : false;
}
警告:mysql_result()要求参数1为资源,布尔值在第34行的/home/meuts3/public_html/core/functions/users.php中给出
我正在尝试建立忘记密码系统,当有人尝试获取新密码时,他会收到email_code
,username
和email
的链接。当他点击时,他会转到 changepassword 页面,在此页面中,我将使用函数is_valid
检查这些信息是否有效,所以如果is_valid
我必须返回user_id
开始会话user_id
。
我该怎么做?
谢谢,我真的很感谢你们。
答案 0 :(得分:2)
sql语句中有错误。您必须引用$username
,$email_code
& $email
中的''
。
SELECT COUNT(*) FROM `users` WHERE `username` = '$username' AND `email_code` = '$email_code' AND `email` = '$email'
所以mysql_query
返回false,而不是资源对象。
答案 1 :(得分:0)
首先,避免使用mysql_ *函数,因为它们已被弃用。
第二, 这个过程应该是,
我们选择user_id
如果提取的行数为0,则没有其他用户我们会获得唯一的user_id
所以让我们写一下sql,考虑到你的user_id的列名是user_id
,而user_id总是> 0:
$q = "SELECT user_id FROM `users` WHERE `username` = '$username' AND `email_code` = '$email_code' AND `email` = '$email'";
$r = mysql_query($q); //warning I don't like mysql_* functions
if(mysql_num_rows($r)>0){ //we have got more than 0 rows
$d = mysql_fetch_assoc($r);
return $d['user_id'];
} else { // No such username, email, email_code combination found in database
return 0;
}
答案 2 :(得分:0)
试试这个:
function is_valid($email_e,$email_code_e,$username_e) {
$email = mysql_real_escape_string($email_e);
$email_code = mysql_real_escape_string($email_code_e);
$username = sanitize($username_e);
$sql = "SELECT user_id FROM `users`
WHERE `username` = $username
AND `email_code` = $email_code
AND `email` = $email";
$result = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($result) <= 0)
return -1;
return mysql_result($result,1);
}