0

次のコードでは、関数を 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');
}

どんな助けにも感謝します!

4

3 に答える 3

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;
}
于 2013-02-03T13:37:26.193 に答える
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;
于 2013-02-03T13:19:11.507 に答える
-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;
于 2013-02-03T13:21:54.730 に答える