さて、最初の関数で置き換えようとしています
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への移行は非常に簡単だったはずです。