0

これを mysql から mysqli に変換する際に問題が発生しました。php のドキュメントに書かれていることを試してみましたが、まだ取得できません。どんな助けでも大歓迎です。

return (mysql_result(mysql_query("SELECT COUNT(id) FROM users WHERE (username = '$username' OR email = '$username') AND password = '$password'"), 0) == 1) ? $user_id : false;

私はこれを試しました:

return (mysqli_data_seek(mysqli_query($con,"SELECT COUNT(id) FROM users WHERE (username = '$username' OR email = '$username') AND password = '$password'"), 0) == 1) ? $user_id : false;

全機能:

function login($username, $password){
$con=mysqli_connect("127.0.0.1","root","","frostbase");
    $user_id = user_id_from_username($username);


    $username = sanitize($username);
    $password = md5($password);

    return (mysqli_data_seek(mysqli_query($con,"SELECT COUNT(id) FROM users WHERE (username = '$username' OR email = '$username') AND password = '$password'"), 0) == 1) ? $user_id : false;
    mysqli_close($con);
}
4

1 に答える 1

0

実際にはもっとうまくやることができます。

safeMysqlは、醜い古い mysql API ベースのコードを新しい醜い mysqli API ベースのコードに変換するのではなく、より優れたアプローチを使用するのに役立つツールです。

重要なのは、アプリケーション コードで未加工の API 呼び出しを使用してはならないということmysqlです。ただし、データバインディング、フェッチ、エラー処理、プロファイリングなど、必要なすべての操作を実行するライブラリにそれらをラップします。 mysqliPDO

率直に言って、クエリを書くだけで済みます - 残りは lib によって行われます:

$sql = "SELECT 1 FROM users WHERE (username = ?s OR email = ?s) AND password = ?s"; 
return (bool)$db->getOne($sql, $username, $username, $password); 

または、関数の形で

function login($username, $password){
    global $con; // you have to connect ONCE per application
    $sql = "SELECT 1 FROM users WHERE (username = ?s OR email = ?s) AND password = ?s"; 
    return (bool)$con->getOne($sql, $username, $username, $password); 
}
于 2013-06-19T08:20:04.437 に答える