gpt4 book ai didi

php - 如何用sql中WHERE子句中的通配符字符替换空变量

转载 作者:太空宇宙 更新时间:2023-11-03 12:11:40 25 4
gpt4 key购买 nike

我通过 ajax - post 方法将两个变量传递到查询中的 WHERE 语句中。第二个变量 $var2 是可选的,它可能会也可能不会被发送。这意味着第二个变量可以为空,查询不会返回任何结果。

SELECT table1.*
FROM table1
LEFT OUTER JOIN table2 ON table1.table2_id = table2.id
WHERE table2.field1 = '".$var1."' AND table2.field2 = '".$var2."'
ORDER BY table2.counter DESC
LIMIT 10;

我的第一个想法是写if语句,比如

if(empty($var2)){
query = ....WHERE table2.field1 = '".$var1."'...
}else{
WHERE table2.field1 = '".$var1."' AND table2.field2 = '".$var2."'
}

第二个想法是将 * 通配符分配给 $var2 如果它是空的(这不起作用)。

有没有比 if 语句更好的方法来处理这个问题?

谢谢

最佳答案

我通常会这样做:

$descriptiveName = !empty($var2) ? "AND table2.field2 = '$var2'" : "";

"SELECT table1.*
FROM table1
LEFT OUTER JOIN table2 ON table1.table2_id = table2.id
WHERE table2.field1 = '$var1'
$descriptiveName
ORDER BY table2.counter DESC
LIMIT 10"

如果 $var2 为空,这会将 $descriptiveName 变量设置为空字符串(将被忽略)。通过这种方式添加多个条件也很容易,但如果条件太多,通常最好有两个单独的查询。

关于php - 如何用sql中WHERE子句中的通配符字符替换空变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23961241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com