在下面的代码中,我已经将功能从MYSQL升级到MYSQLI,我在之前的帖子中得到了一些帮助,他们说应该做些什么......但现在问题该怎么做..
问题是在id
之前设置return
,否则无论我登录哪个帐户,我仍然会收到用户ID = 1
。
function user_id_from_username($username) {
$username = sanitize($username);
global $db_connect;
$result = $db_connect->query("SELECT(id) FROM members WHERE username = '$username'");
if (false === $result) {
return false;
}
return ($result->num_rows == 1) ? id : false;
我尝试按照旧的MYSQL
代码进行操作,但之后却出错了。
我的旧代码:
function user_id_from_username($username){
$username = sanitize ($username);
return mysql_result(mysql_query("SELECT(id) FROM members WHERE username = '$username'"), 0, 'id');
}
我将不胜感激任何帮助!
答案 0 :(得分:0)
您是否尝试过fetch_array
或mysqli_fetch_array
?
$row = $result->fetch_array(MYSQLI_ASSOC);
// or
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
// and returning
return $row['id'] ? $row['id'] : false;
答案 1 :(得分:0)
我没试过,但这应该可行吗? 我还把$ db_connect作为参数,因为它更安全,但这取决于你。
function user_id_from_username($username) {
$username = sanitize($username);
global $db_connect;
$result = $db_connect->query("SELECT id FROM members WHERE username = '".$db_connect->real_escape_string($username)."'");
if (!$result) {
return false;
}
if($result->num_rows == 1){
$row = $result->fetch_assoc();
$output = $row['id'];
}
else{
$output = "Username does not exist in table or is a duplicate.";
}
return $output;
}
答案 2 :(得分:-2)
return ($result->num_rows == 1) ? id : false;
应该是
if(mysqli_num_rows($result) ===1 ){
$row = mysqli_fetch_assoc($result);
return intval($row['id']);
}
return false;