【问题标题】:MySQL syntax error, for no apparent reasonMySQL 语法错误,原因不明
【发布时间】:2014-04-12 10:03:48
【问题描述】:

我有这个用 PHP 编写的 MySQL 语句,但它似乎包含语法错误。

$user_forum_sql = ( !empty($forum_id) ) ? " WHERE session_page = " . intval($forum_id) : '';
    $sql = "SELECT * FROM " . $session_table_name . '"'.$user_forum_sql.'"';

这是我遇到的错误。我不确定是什么原因造成的。

SQL Error : 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 * FROM ""

【问题讨论】:

  • 我看到您将所有 WHERE session_page... 放入 ", echo $sql 以查看它的外观。试试这样:$sql = "SELECT * FROM " . $session_table_name.' '.$user_forum_sql;
  • 语法错误
  • echo $sql 看看查询的样子,我只是想猜测一下,正如我在您的链接上看到的那样,$session_table_name 也是空的
  • 仍然给我一个错误,这应该是“索引页面还扫描用户和活动用户的会话表。当在线用户达到接近一千时,这种检查会及时变得昂贵. 这甚至不是 hack, 我最终在 cron 作业上有一个外部脚本来按每分钟运行精确的查询. 结果存储在哈希表中, 然后 phpBB 查询哈希表以获取列表在线用户。”
  • SELECT * FROM "" 不是有效的 SQL 语句,您在那里缺少表名

标签: mysql syntax-error phpbb


【解决方案1】:
$user_forum_sql = ( !empty($forum_id) ) ? " WHERE session_page = " . intval($forum_id) .'' ;
$sql = "SELECT * FROM " . $session_table_name.$user_forum_sql;
echo $sql;

您的 $session_table_name 为空,因此您可能尚未开始会话或未设置值。

【讨论】:

  • 我认为您需要从 $user_forum_sql 中删除 : ''。如果可以的话,请回显 $sql
  • 我也很确定删除 user_forum_sql 只会破坏命令
  • 这是我在 cron 作业上使用外部脚本以每分钟运行准确查询时应该发生的情况。结果存储在一个哈希表中,然后phpBB从哈希表中查询在线用户列表。
  • 当我将您的编辑放入 phpmyadmin 并尝试显示它时,它仍然给我一个 sql 错误
  • 我升级到discourse会不会更好?
猜你喜欢
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 2013-04-09
相关资源
最近更新 更多