gpt4 book ai didi

mysql - WHERE 子句仅当变量被设置时

转载 作者:行者123 更新时间:2023-11-29 05:23:11 25 4
gpt4 key购买 nike

index.php 中的输入和脚本

<input type="text" class="filter" id="frClientName" name="cl_name">

<script>
$(".filter").on('change keydown keyup', function(){
var clname;
clname = document.getElementById("frClientName").value;
$("#spravaContent").load("php/search_results/sprava.php?cl_name=" + clname;
});
</script>

php/search_results/sprava.php

$clname = '';
if ( isset ( $_GET['cl_name'] ) ) {
$clname = $_GET['cl_name'];
}

$sql = ("
SELECT * FROM `db`.`table`
WHERE cl_full_name LIKE '%".$_GET['cl_name']."%'
");

我如何才能正确使用 WHERE 子句并且仅当变量不为空时?谢谢你的指导。

编辑:

$sql = ("
SELECT * FROM `db`.`table`
ORDER BY {$oby} {$ohow}
WHERE cl_full_name LIKE '%".$_GET['cl_name']."%'
OR '' = '".$_GET['cl_name']."'
LIMIT $start_sprava,$per_page_sprava
");

最佳答案

这有点老套,但我已经用 CASE 处理过这样的情况。陈述。你评估你的论点,如果它不符合你要求的条件,你使用一个明显正确的陈述,比如 1=1这具有保留 WHERE 的那部分的净效果子句参与过滤结果集。

SELECT * 
FROM `db`.`table`
WHERE CASE WHEN TRIM('".$_GET['cl_name']."') IS NOT NULL THEN cl_full_name LIKE '%".$_GET['cl_name']."%'
ELSE 1=1
END
ORDER BY {$oby} {$ohow}
LIMIT {$start_sprava}, {$per_page_sprava}
;

不要忘记监督您的输入,这样您就不会得到 Little Bobby Tables问题。此外,ORDER BYLIMIT子句通常位于 WHERE 之后条款。

关于mysql - WHERE 子句仅当变量被设置时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23208438/

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