-3

ユーザーを Web サイトにログインさせるために、いくつかの関数を使用しています。最初に次のような login() を作成しました。

function login($username, $password){
$id = user_id_from_username($username);

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

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

関数の 2 行目でわかるように、別の関数 user_id_from_username を呼び出しています。それは次のようになります。

function user_id_from_username($username) {
$username = sanitize($username);
return mysql_result(mysql_query("SELECT `id` FROM `users` WHERE `username` == '$username'"), 0, `id`);
}

ログイン機能を使用すると、次のような警告が表示されます。

警告: mysql_result(): 指定された引数は、62 行目の .../users.php の有効な MySQL 結果リソースではありません

user_id_from_username の return ステートメントで mysql_result を参照しています。ログインが正しく機能しなくなります。

この警告を解決できません。皆さんはそれで何か問題があると思いますか?

どうもありがとう!

4

1 に答える 1

2

クエリに含まれている可能性があります。

WHERE `username` == '$username'"

次のように変更してみてください (余分な =) を削除します):

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

編集: また、これが新しいプロジェクトの場合は、mysql_ 関数の代わりに PDO を使用してください。エラー処理を追加してください。

于 2013-05-06T22:41:05.293 に答える