0

いくつかの同様の質問が見つかりましたが、これとまったく同じものはありません...だからここに行きます...

したがって、この SQL ステートメントを PHPMyAdmin SQL ウィンドウに貼り付けると完全に機能しますが、PHP mysql_query ステートメントとして実行すると結果はゼロ (エラーなし) になります。

SELECT  distinct action_detail2
FROM    stats_tracking
WHERE   date_entered >= '2013-05-08 00:00:00' AND
        date_entered <= '2013-05-08 23:59:59'  AND
        action_detail1 != '10.0.0.1'
ORDER BY    action_detail2

構文に何か問題があるとエラーになると思うでしょう。ご覧のとおり、特定の日のすべてのエントリを返そうとしています。そして、それは PHPMyAdmin で完全に機能します。「mysql_query」呼び出しで 0 の結果を返すだけです。

コードは次のとおりです。

// Fix date entries
$fixFrom = explode("-", $_GET['from']);
$FROM = $fixFrom[2] . "-" . $fixFrom[0] . "-" . $fixFrom[1];
$fixTo = explode("-", $_GET['to']);
$TO = $fixTo[2] . "-" . $fixTo[0] . "-" . $fixTo[1];

// Build SQL statement
$SQL_Centers = "
    SELECT      distinct(action_detail2)
    FROM        stats_tracking
    WHERE       date_entered >= '" . $FROM . " 00:00:00' AND
                date_entered <= '" . $TO . " 23:59:59'  AND
                action_detail1 != '10.0.0.1'
    ORDER BY    action_detail2
";

$resultCenters = mysql_query($SQL_Centers); // Run the actual query.

$dataCount_Centers=mysql_num_rows($resultCenters); // Get the count of rows, just in case we need it.

echo $dataCount_Centers;

これは 0 のカウントを返しています。エラーはありません。コードの後半で、すべてのデータ出力を JSON に変換すると、他のすべてのクエリが機能します。これも JSON レコードを示していません。繰り返しますが..エラーはありません。それらはすべて同じDB接続を介して実行されています..など。明らかに、このステートメントにより、レコードが返されません。

SQL ステートメントを ECHO してから、Firebug からこの質問にコピー アンド ペーストしました。次に、それを PHPMyAdmin SQL に貼り付けて実行しました。完璧に機能しました。

どんな助けでも大歓迎です。

ありがとう

4

3 に答える 3

2

「mysql_query」呼び出しで 0 の結果を返すだけです。

これは、クエリにエラーがあることを意味します。値です0False

したがって、次のステップは、エラーが何であるかを見つけることです。これを行うには、 の結果を出力しmysql_error()ます。

PHP から古いメソッドが削除されるため、コードをmysql_*からmysqliまたはに移行する必要もあります。詳細については、PHP マニュアルのこのリンクを参照してください。PDOmysql_*

于 2013-05-09T05:35:04.247 に答える
0

私はこれが数年前のものであることを知っています (mysqli は現在新しい標準です) が、同様の問題がありました。クエリを phpmyadmin に貼り付けた場合は機能しましたが、PHP スクリプトからは機能しませんでした。エラーはなく、データベースが更新されていないこと以外に何か問題があるという兆候はまったくありませんでした。そのため、データベース テーブルを手動で削除して再構築した後 (うーん...)、標準の mysqli_query ではサポートされていない複数行のクエリを使用していたことがわかりました。例:

mysqli_query($connection, "SET @x = 0; UPDATE table SET someValue = (@x=@x*2) WHERE someID = 4;");

同様のことを行っている場合は、代わりに mysqli_multi_query を使用してみてください。

mysqli_multi_query($connection, "SET @x = 0; UPDATE table SET someValue = (@x=@x*2) WHERE someID = 4;");

...今では恥ずかしいほど明白に思える何か。:)

うまくいけば、これは将来誰かを助けるでしょう!

于 2018-08-31T07:21:51.870 に答える