【问题标题】:Error in phpmyadmin though runs fine in php scriptphpmyadmin 中的错误虽然在 php 脚本中运行良好
【发布时间】:2011-03-23 10:24:07
【问题描述】:

好的,所以这个很奇怪,我认为我的 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 有一些解决方法? (尽管这似乎不太可能,但我只需要确定一下即可)

谢谢!

【问题讨论】:

  • Mmmmm... 你可以尝试用反引号` 替换引号' 吗? (或者完全删除它们,或者)
  • +1:在标签中包含 MySQL 错误 # - 谢谢!
  • @Pekka 让我试一试,看看会发生什么。 @OMG是的,当有人发布问题并说他们对某些事情有错误而实际上并没有给您错误时,我讨厌它。就像您是一些疯狂的读心者,只需查看代码就可以猜出他们遇到的错误。我的意思是我确信这是可能的,但大多数时候它不是。吐槽完了。 :P
  • @Pekka 不喜欢反引号或删除它们。仍然给我上面提到的同样的错误。
  • 这里是一个随机的.. 删除您的别名周围的引号作为 AS。仅供参考,'as' 关键字是可选的。

标签: php sql mysql phpmyadmin mysql-error-1064


【解决方案1】:

PHPMyAdmin 冒昧地稍微重写您的查询(例如,添加 LIMIT 0,30 子句以仅显示前 30 行)。

您能否启用查询日志并查看在服务器上实际执行的查询?

如果没有,请尝试从查询中删除元素,直到它起作用。向我们展示该查询。或者显示一些表定义?

【讨论】:

  • 在这种情况下,没有添加额外的代码,因为我已经检查过了。让我看看查询日志,看看它显示了什么?之后我会尝试添加一些表定义。
  • 我删除了 count 子查询,结果证明这是问题所在。但这似乎很基本。
  • 好的,另一个发现是,如果我删除列的所有标签,那么就可以了。
  • 它在不改变任何东西的情况下工作。我不知道发生了什么。一定是 mysql 中的一个临时问题。
【解决方案2】:

您的表名或列名中是否有空格?如果是这样,请将它们括在反引号中:

`table name`

【讨论】:

  • 没有空格。就我个人而言,我觉得如果你的表格或列名中有空格,你应该被枪杀。再次只是我的意见。 :P
  • @spinon:我同意空格。我只是在第 1 行没有看到任何奇怪的东西,除了 't1' 等,我认为它们不是真正的表名。
  • 表名不是关键字吗?
  • 没有表名不是关键字。它们是非常丑陋的表名,不可能是关键字。
【解决方案3】:

你应该做的是删除phpmyadmin并保证不再下载它。

然后启动命令行 mysql 提示符,并尝试相同的查询。这将告诉您查询是否真的很糟糕,或者 phpmyadmin 是否只是为了让被误导的作者带来变态的乐趣而将其丢弃。

【讨论】:

  • 总有一天我会同意的。虽然 phpmyadmin 非常适合让我变得懒惰。有时我并不总是想使用命令行。当我想要精细控制时很好,但当我不想输入很多时就不好了。周五@3 肯定是后者。
  • 这让我很感兴趣。您不喜欢 PHPMyAdmin 的哪些方面?
  • 我读过很多次人们因为 phpmyadmin 故障而丢失数据或时间的故事;对我来说,这风险太大了。只读操作可能没问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多