【问题标题】:MySQL Error from PHP / MySQL upgrade - #1064 - You have an error in your SQL syntax来自 PHP / MySQL 升级的 MySQL 错误 - #1064 - 你的 SQL 语法有错误
【发布时间】:2016-05-11 03:04:02
【问题描述】:

我最近遇到了这个 MySQL 错误:

Error SQL query:    
SELECT t.entry_id FROM db_channel_titles AS t LEFT JOIN db_channels ON t.channel_id = db_channels.channel_id LEFT JOIN db_members AS m ON m.member_id = t.author_id WHERE t.entry_id !='' AND t.site_id IN ('1')  AND t.entry_date < 1462934343 AND (t.expiration_date = 0 OR t.expiration_date > 1462934343) AND t.status = 'open' ORDER BY FIELD(t.entry_id, )  LIMIT 0, 100
MySQL said:   #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 ')  LIMIT 0, 100' at line 1

我假设它来自 PHP 或 MySQL 升级。

两个问题:

  1. SQL 中的错误是什么?
  2. 我们使用的 PHP 框架是旧版本的 ExpressionEngine(2.0 版),所以我不确定我们是否可以简单地破解 SQL。鉴于此,我想知道解决问题的最快方法是什么。有什么建议吗?

【问题讨论】:

  • 已修复 - 相同的错误消息。
  • 你需要做什么来产生这个错误?你真的是指版本 2.0 还是只是 2?版本 2 仍在更新,但 2.0 是很久以前的事了,实际上是一个公开测试版。 docs.expressionengine.com/v2/about/changelog.html

标签: php mysql expressionengine


【解决方案1】:

这是不对的

ORDER BY FIELD(t.entry_id, ) 

MySql 不喜欢缺少的列,

【讨论】:

  • 所以,我想我的问题变成了为什么 SQL 中突然出现了缺失的列。在出现此错误之前,我没有升级 ExpressionEngine 或任何相关的 PHP 代码。所发生的只是 PHP 或 MySQL 升级。
  • 可能是拼写错误、复制和粘贴错误,或者您使用了一个错误的示例。这是 order by 子句,因此您可能只需删除 , 尾随逗号即可。即使只是为了测试目的。
【解决方案2】:

与 PHP 或 MySQL 升级无关。你有花引号:

t.site_id IN (‘1’)

在几个地方。

【讨论】:

  • 奇怪 - 我刚刚从 phpMyAdmin 复制/粘贴。让我再试一次。
  • @SnowCrash 确保你得到他们所有。我看到三个点。
  • @SnowCrash 好吧,ORDER BY FIELD(t.entry_id, ) 看起来好像少了点什么。就在它报告问题的地方。
猜你喜欢
  • 2023-02-24
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
相关资源
最近更新 更多