在返回功能之前输入ID

时间:2013-02-03 13:08:37

标签: php mysql mysqli

在下面的代码中,我已经将功能从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');
}

我将不胜感激任何帮助!

3 个答案:

答案 0 :(得分:0)

您是否尝试过fetch_arraymysqli_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;