-1

私はPHPとMySQLの初心者です。

ユーザーと一緒に基本的なサイトを作成しようとしています。現在、ログイン ページを作成しており、次の 2 行を使用していmysqli_fetch_array()ます。$_POST['user']$_POST['pass']

$query = mysqli_query($con,"SELECT * FROM persons WHERE user='" . $_POST['user'] . "' AND pass=ENCODE('" . $_POST['pass'] . "',passcode)");
while(mysqli_fetch_array($query)) // line 65
    // ..

エラーが出たとき

警告: mysqli_fetch_array() は、パラメーター 1 が mysqli_result であることを想定しています。ブール値はD:\xampp1.8.3\htdocs\hkmschat\default.phpの65行目に指定されています

このステートメントがブール値なのはなぜですか? mysqli_fetch_array()同じスクリプトで他の検証に非常によく似たクエリを何度も使用しましたが、このようなものは返されませんでした。

私はこれらがたくさんあることを知っていますが、この質問にまだ答えているものをまだ見つけていません. 良い答えにリダイレクトするか、この質問に答えていただければ幸いです。

ありがとう。

4

2 に答える 2

1

クエリが失敗し、偽の値を返しています。

これを mysqli_query() の後に置いて、何が起こっているかを確認してください。

if (!$query) {
    printf("Error: %s\n", mysqli_error($con));
    exit();
}

詳細については。

http://www.php.net/manual/en/mysqli.error.php

実行する前に、常にクエリを印刷してみてください

于 2013-09-08T13:48:50.733 に答える
1

次のように実行する必要があります。

while($res = mysqli_fetch_array($query)){
   echo $res['user'];
   //Etc...
}

変数に設定しない場合、コードはブール値を返します。

変数$res[]は、見つかった行のすべてのフィールドを含む配列です。

さらに、あなたのコードは SQL インジェクションの影響を受けやすいため、DANGEROUSです。この記事を参照してください: SQL インジェクション

于 2013-09-08T13:49:04.783 に答える