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

我很茫然。我提出问题的原因实际上有两个:

  1. 我的查询实际上有什么问题吗?
  2. 如果不是,错误 mysql 是否显示了我的脚本运行缓慢的原因,并且 php 有一些解决方法?(尽管这似乎不太可能,但我只需要确定一下即可)

谢谢!

4

3 回答 3

1

PHPMyAdmin 冒昧地稍微重写您的查询(例如,添加 LIMIT 0,30 子句以仅显示前 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 回答