Php 在WHERE子句中如何使用CASE?
以下是我查询的一部分:Php 在WHERE子句中如何使用CASE?,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,以下是我查询的一部分: 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您的SQ
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:120堆栈跟踪:#0 C:\xampp\htdocs\myweb\others\users.php(120):PDO->prepare('SELECT u.id use…')中第13行使用的正确语法#1c:\xampp\htdocs\myweb\others\questions.php(359):用户->索引('AND categories…','internal JOIN qan…','taged')#2c:\xampp\htdocs\myweb\others\users.php(26):问题->标记('index')#3c:\xampp\htdocs\myweb\application\other.php(24):用户->索引()#4c:\xampp\htdocs\myweb\index.php(161):需要一次('C:\xampp\htdocs…)355}在第120行的C:\xampp\htdocs\myweb\others\users.php中抛出
有人知道怎么了吗?我想你用错了语法
$sql = "WHERE CASE
WHEN '{$range}' = 'ALL' THEN 1=1
ELSE {$this->table_alias}.date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 $range))
END";
也许在已经悬而未决的问题上继续这样做$未引用范围,并与“全部”进行比较。表中很可能没有名为ALL的列。什么是
$range
?应该是PHP变量吗?似乎不是一个MySQL变量。T Gray,他正试图做一个字符串对字符串的比较。那个case语句没有意义。。@ficuscr对您的另一个问题的回答有什么问题吗?@ficuscr正如我在问题$range
中提到的,是一个PHP变量。所以最后的查询看起来像WHERE CASE ALL WHEN ALL THEN…
。什么是$range
$sql=“WHERE CASE WHEN{$range}…”
可能…注意PHP标记并查看本系列中的上一个问题。我认为,这是PHP变量贪婪。但不确定这是否被理解。此语法也有相同的问题。对此进行了一些清理。