【发布时间】:2017-08-02 19:40:05
【问题描述】:
这是我的查询的一部分:
WHERE CASE $range WHEN 'ALL' THEN TRUE
ELSE $this->table_alias.date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 $range))
END
注意到$range 是一个包含单词的php 变量。它抛出此错误消息:
致命错误:未捕获的 PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法,以便在 C:\xampp\htdocs\myweb\others\users.php 第 13 行的 'ALL WHEN 'ALL' THEN TRUE ELSE re.date_time > unix_timestam' 附近使用:120 堆栈跟踪:#0 C:\xampp\htdocs\myweb\others\users.php(120): PDO->prepare('SELECT u.id use...') #1 C:\xampp\htdocs\ myweb\others\questions.php(359): users->index(' AND categories...', ' INNER JOIN qan...', 'tagged') #2 C:\xampp\htdocs\myweb\others\ users.php(26): questions->tagged('index') #3 C:\xampp\htdocs\myweb\application\other.php(24): users->index() #4 C:\xampp\htdocs \myweb\index.php(161): require_once('C:\xampp\htdocs...') #5 {main} 在第 120 行的 C:\xampp\htdocs\myweb\others\users.php 中抛出
有人有什么问题吗?
【问题讨论】:
-
也许在已经开放的问题上继续这个问题? stackoverflow.com/questions/45468750/…
-
$range 没有被引用并且与“ALL”进行比较。表中很可能没有名为 ALL 的列。
-
什么是
$range?那应该是PHP变量?似乎不是 MySQL 变量。 T Gray,他正在尝试进行字符串之间的比较。 -
那个案例陈述没有意义。@ficuscr 对你的另一个问题的回答有什么问题?
-
@ficuscr 正如我在问题中提到的,
$range是一个 PHP 变量。所以最终查询看起来像WHERE CASE ALL WHEN ALL THEN ...。