sql >> データベース >  >> RDS >> Mysql

PHPがmysql_*からmysqli_に移行します

    さて、最初の関数で置き換えようとしています

    return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
    

    まず、これが何をするのかを明確にしましょう:

    • クエリを指定
    • 結果を取得
    • get 0. row(英語では「1st」)
    • user_idを取得します

    次に、mysqli_を使用してこれを段階的に実行します :

    //specify query
    $result = mysqli_query(connect(),"SELECT `user_id` FROM `users` WHERE `username` = '$username'");
    //fetch result
    $row = mysqli_fetch_assoc($result);
    //get column
    return $row['user_id'];
    

    行をfetch_assocとして指定する必要はありません。 1つだけを返します。

    次に、2番目の関数について

    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
    
    • クエリを指定
    • 結果を取得
    • 0を取得します。行
    • これが1に等しい場合:return user_id 、それ以外の場合はFALSE

    mysqli_で :

    //specify query
    $result = mysqli_query(connect(),"SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'");
    //fetch result
    $row = mysqli_fetch_row($result);
    //if first returned column is equal to 1 return $user_id
    //otherwise FALSE
    return ($row[0]==1) ? $user_id : FALSE;
    

    しかし、待ってください-なぜ私は mysqli_fetch_rowを使用したのですか? ここでは、 mysqli_fetch_assoc 上で使用されましたか? RTM;)

    今日は何を学びましたか?コードをできるだけ短く書くことができるからといって、そうする必要があるとは限りません。元のコードがもう少し分割されていれば、複雑な式ではなく小さな部分を簡単にデバッグできたので、MySQLiへの移行は非常に簡単だったはずです。




    1. Datetime列でのみ日付でグループ化

    2. SQLiteでデータベースをアタッチする

    3. SQLServerでテーブル値関数を変更する

    4. データベースの問題、変化するデータ構造を保存する方法