3

さて、これは奇妙で、SQLクエリに問題があるはずだと思っていますが、何も問題はありません。何が起こっているのかというと、ユーザーがサインアップしたすべてのカテゴリーと、同じカテゴリーにサインアップした他の人の数を取得するphpスクリプトで実行しているスクリプトがあります。PHPページでクエリを実行すると、非常に遅くなりますが、結果が返されます。何が起こっているのかを知りたかったので、phpmyadminにアクセスして同じスクリプトを実行すると、結果のカウントが非常に速く返されますが、通常は結果が表示される場所に次のエラーが表示されます。

#1064 - You have an error in your SQL syntax; check the manual that corresponds
       to your MySQL server version for the right syntax to use near '' at line 1 

クエリは次のとおりです。

SELECT t1.category_id, t3.description AS 'Category',
    t1.list_type_id, t2.name, t1.status_id, t2.user_id,
    t2.email, UNIX_TIMESTAMP( t1.record_date ) AS 'RecordDate',
    (
        SELECT COUNT( category_id ) 
        FROM t1_sub
        WHERE t1_sub = t1.job_ctg_id AND
            t1_sub.list_type_id = t1.list_type_id AND
            t1_sub.status_id =44
    ) AS 'MatchingListings'
FROM t1
INNER JOIN t2 ON t2.id_rfp_vendor_data = t1.user_id
INNER JOIN t3 ON t3.type_lookup_id = t1.job_ctg_id
WHERE t1.status_id =43

私は途方に暮れています。私の質問の理由は本当に2つあります:

  1. 私が見逃しているクエリに実際に何か問題がありますか?
  2. そうでない場合、エラーmysqlは、スクリプトの実行が遅く、そのphpがこれを回避する理由を示していますか?(これはありそうもない可能性のように思えますが、私は確認するように頼む必要があります)

ありがとう!

4

3 に答える 3

1

PHPMyAdminは、自由にクエリをわずかに書き直します(たとえば、最初の30行のみを表示するようにLIMIT 0,30句を追加します)。

クエリログを有効にして、サーバーで実際に実行されるクエリを確認できますか?

そうでない場合は、機能するまでクエリから要素を削除してみてください。そのクエリを表示します。または、いくつかのテーブル定義を表示しますか?

于 2010-07-30T20:03:34.290 に答える
0

テーブル名または列名にスペースが含まれていますか? その場合は、バッククォートで囲みます。

`table name`
于 2010-07-30T19:47:12.247 に答える
0

すべきことは、phpmyadmin を削除し、二度とダウンロードしないことを約束することです。

次に、コマンドライン mysql プロンプトを起動し、同じクエリを試します。これにより、クエリが本当に悪いものなのか、それとも phpmyadmin が単に見当違いの作成者の倒錯した楽しみのためにそれを破棄したのかがわかります。

于 2010-07-30T22:06:03.120 に答える