2017-08-02 18 views
0

Hier ist ein Teil meiner Anfrage:Wie wird CASE WHEN in der WHERE-Klausel verwendet?

WHERE CASE $range WHEN 'ALL' THEN TRUE 
     ELSE $this->table_alias.date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 $range)) 
     END 

Darauf hingewiesen, dass $range ein PHP-Variable ist, die ein Wort enthält. Es wirft diese Fehlermeldung:

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL WHEN 'ALL' THEN TRUE ELSE re.date_time > unix_timestam' at line 13 in C:\xampp\htdocs\myweb\others\users.php:120 Stack trace: #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} thrown in C:\xampp\htdocs\myweb\others\users.php on line 120

Hat jemand was falsch?

+0

Vielleicht verfolgen dies auf die bereits offene Frage falsche Syntax verwendet? https://stackoverflow.com/questions/45468750/how-can-i-emulate-where1-in-a-dynamic-query/45468934#45468934 – ficuscr

+4

$ Bereich ist nicht zitiert und vergleicht mit "ALL". Es gibt höchstwahrscheinlich keine Spalte namens ALL in der Tabelle. –

+0

Was ist '$ Bereich'? das sollte PHP Variable sein? Scheint keine MySQL-Variable zu sein. T Grey, er versucht eine Zeichenkette zum Zeichenkettenvergleich zu machen. – ficuscr

Antwort

1

Ich glaube, Sie

$sql = "WHERE CASE 
    WHEN '{$range}' = 'ALL' THEN 1=1 
    ELSE {$this->table_alias}.date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 $range)) 
    END"; 
+0

Was ist '$ range'? ...' $ sql = "WO FALL WENN {$ range} ...' vielleicht ... PHP-Tags notieren und vorherige Frage in dieser Serie sehen. – ficuscr

+0

ich denke, es ist PHP-Variable –

+0

Einverstanden Nicht sicher, dass das aber verstanden wird – ficuscr