2

私の投稿は非常に基本的であるように見えるため、うんざりしている人もいると思いますが、「mysql_result()」で同様の問題に遭遇しました。私のコードはこのエラーを出力し続けます:

Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-5.3.9\www\Image Upload\func\user.func.php on line 10

バッククォートが正しい場所にあることを確認したとき..エラーがどこにあるのかわかりません..コードは次のとおりです。

function login_check($email, $password){
       $email = mysql_real_escape_string($email);
       $login_query = mysql_query("SELECT COUNT (`user_id`) as `count`, `user_id` FROM `users` WHERE `email` = '$email' AND `password` = '".md5($password)."'");
       return (mysql_result($login_query, 0) == 1) ? mysql_result($login_query, 0, '$user_id') : false;
}

10行目は次のとおりです。

return (mysql_result($login_query, 0) == 1) ? mysql_result($login_query, 0, '$user_id') : false;

すべての忍耐と助けに感謝します! -TechGuy24

4

3 に答える 3

2

構文エラー:

$login_query = mysql_query("SELECT COUNT (`user_id`) as `count`, `user_id` FROM `users` WHERE `email` = '$email' AND `password` = '".md5($password)."'");
                                                        ^--   ^--

バッククォートは、フィールド/テーブルの指定で予約語をエスケープするために使用されます。asエイリアスは明らかにフィールド/テーブル名ではないため、エスケープする必要はありません。

集約関数も使用していますが、句なしでcount()非集約フィールド ( user_id)も選択しているため、mysql はそれについても文句を言います。group by

コードが次のような構造である場合:

$result = mysql_query($sql) or die(mysql_error());
                           ^^^^^^^^^^^^^^^^^^^^^^

構文エラー メッセージが表示されます。クエリが成功したと想定しないでください。常にエラーをチェックしてください。SQL 構文が 100% 完璧であっても、チェックしない理由は他にもたくさんあります。

于 2012-08-29T04:27:28.687 に答える
0

zerkms が言ったように、必要はありませんCOUNT

問題:COUNTそれと括弧の間のスペースが好きではないので:

COUNT (

する必要があります

COUNT(

編集:

これはうまくいくはずです:

SQL:

SELECT `user_id` FROM `users` WHERE `email` = '<email>' AND `password` = '<hash>'

PHP:

$result = mysql_query($query);
$login = mysql_result($result);
if(mysql_num_rows($result) == 0) return false;
return $login['user_id'];

ところで、あなたは危険にさらされています...

SQL INJECTION    *------==========[');SQL--|----]=====0

準備済みステートメントで MySQLi または PDO を使用する必要があります。

于 2012-08-29T04:29:23.150 に答える
0

SQL ステートメントの実行中にエラーが発生したようで、mysql_query成功した場合にのみリソースが返されます。エラーの場合は戻りますfalse( mysql_query に関する PHP マニュアルを参照してください)。mysql_resultfalseを最初のパラメーターとして呼び出しているため、これでエラーが説明されます。

于 2012-08-29T04:30:58.073 に答える