Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在WHERE子句中如何使用CASE?_Php_Mysql_Sql_Pdo - Fatal编程技术网

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变量贪婪。但不确定这是否被理解。此语法也有相同的问题。对此进行了一些清理。