如何在 WHERE 中使用 if 语句在 php 中编写 sql 查询

How to write sql query in php with if statement in WHERE

如何在查询的 WHERE 部分使用 if 语句编写 SQL 查询?

这是我的 sql:

$sql = 'SELECT First, Second, 
           Third,Fifth, Status, Isik_id, Comments, Code
    FROM Persons WHERE  Status = 1 && Third = "'.$whoislogged.'" ORDER BY RAND()  LIMIT 1';

Third = "'.$whoislogged.'"是session来的一个词

如果 $whoislogged 存在并且等于 Third 那么查询应该是这样的:

$sql = 'SELECT First, Second, Third,Fifth, Status, Isik_id, Comments, Code
        FROM Persons 
WHERE  Status = 1 && Third = "'.$whoislogged.'" ORDER BY RAND()  LIMIT 1';

但是如果 $whoislogged dosent 出现,那么查询应该是这样的:

 $sql = 'SELECT First, Second, 
           Third,Fifth, Status, Isik_id, Comments, Code
    FROM Persons WHERE  Status = 1 ORDER BY RAND()  LIMIT 1';

那么我怎样才能将所有这些都放在一个查询中呢?

只需创建一个包含Third语句的新变量

if ( !empty($whoislogged) ) $third = "AND Third = ". $whoislogged;
else $third = "";

$sql = 'SELECT First, Second, 
           Third,Fifth, Status, Isik_id, Comments, Code
    FROM Persons WHERE  Status = 1 '. $third .' ORDER BY RAND()  LIMIT 1';

这不是最有效的方法,但很有效

您可以在查询本身中处理它。

WHERE  Status = 1 and if(Third = "'.$whoislogged.'", Third = "'.$whoislogged.'" , 1=1)

条件部分将检查第三个是否与 $whoislogged 匹配,如果为真则添加 id 作为条件,否则忽略此条件。