我有一个简单的全文搜索查询,数据来自 HTML 表单输入。如果语句检查或者用 array_key_exists 填充了所有三个输入,然后连接所有字符串,但是如果有人没有填充第一个或第二个输入,那么我的查询 WHERE 部分是 WHERE AND contract = $var
所以在这种情况下 AND 是不需要的。我的问题的解决方案是什么,我该如何解决?当需要 AND 时,只需添加到查询字符串中,不需要时不添加。
$sql = "SELECT
slug,
title,
company,
location,
email,
street,
city,
phone,
url,
description,
image,
created_at
FROM jobs
WHERE ";
array_key_exists('paieska', $segment) ? $sql .= "MATCH(title, description) AGAINST('".urldecode($segment['paieska'])."') " : '';
array_key_exists('darbo-laikas', $segment) ? $sql .= "AND contract = '".$segment['darbo-laikas']."' " : '';
array_key_exists('miestas', $segment) ? $sql .= "AND location = '".$segment['miestas']."'" : '';
最佳答案
最简单的解决方案是在原始 where 语句中添加一个 1
(并且在您的第一个 $sql
if 语句之前添加 AND
)。这将始终为真,并将返回所有记录。
如果 darbo-laikas
存在,您的查询将是 ...FROM jobs WHERE 1 AND contract...
这将正常工作。
$sql = "SELECT
slug,
title,
company,
location,
email,
street,
city,
phone,
url,
description,
image,
created_at
FROM jobs
WHERE 1 ";
array_key_exists('paieska', $segment) ? $sql .= "AND MATCH(title, description) AGAINST('".urldecode($segment['paieska'])."') " : '';
array_key_exists('darbo-laikas', $segment) ? $sql .= "AND contract = '".$segment['darbo-laikas']."' " : '';
array_key_exists('miestas', $segment) ? $sql .= "AND location = '".$segment['miestas']."'" : '';
关于php - SQL 字符串与 if 语句的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40126119/