-1

私のSQLクエリは、基準を満たす行の数をカウントします。この値が0または1の場合があります。これにより、ブール値の戻りに関するエラーが発生します。

どうすればこれを回避できますか?使用しないでmysql_fetch_arrayください?

// Query the db to count the # of comments.
$price_change_dbo = 
    mysql_query("
        SELECT COUNT(1) AS comment_count 
        FROM comments 
        WHERE user_id = '{$user_id}';"
    );

// Use the result. 
$price_change_row = mysql_fetch_array($price_change_dbo);

警告は次のとおりです。

Warning: mysql_fetch_array() expects parameter 1 to be resource, 
         boolean given in /Applications/MAMP/... on line 1.
4

3 に答える 3

2

結果がfalseであるかどうかを確認する必要があります。これは、sql-commandのクエリ中にエラーが発生した場合に発生します。結果がfalseの場合は、エラーを次のように出力する必要があります。

echo mysql_error();

(ただし、mysql_メソッドは非推奨であるため、PDOまたはmysqliの使用を検討する必要があります)。

最後に、SQLが間違っています。{}を削除すると、機能するはずです。

于 2012-11-05T18:19:06.267 に答える
1

コメントが言うように、mysql_関数のファミリーを使用することはもはや推奨されていません。

ただし、実際に何が起こったかを説明するために、次のようにします。

mysql_queryカウントの結果を直接返すことはありません。リソースを作成し、他のmysql_関数がそのリソースを取得するために使用する数値識別子を返します。

エラーメッセージは、リソースの代わりにブール値を取得したことを示します。通常、これは、リソース識別子の代わりにmysql_query失敗して返されたことを意味します。false

したがって、最初に結果が正しいかどうかを確認し、falseそれに応じて動作する必要があります。たとえばmysql_error、クエリの何が問題だったかを確認するために使用します。

于 2012-11-05T18:23:03.157 に答える
0

私はあなたのSQLクエリが悪いと思います:

 "  SELECT COUNT(1) AS comment_count 
    FROM comments 
    WHERE user_id = '".$user_id."'"

これらの中括弧は、クエリでエラーを引き起こしています。これにより、mysql_queryが有効なリソースではなくなり、mysql_fetch_arrayが文句を言っているのです。

于 2012-11-05T18:19:10.073 に答える