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
声明处理了这种情况。您评估您的论点,如果它不满足您所要求的条件,则使用一个明显为true的语句,例如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 BY
andLIMIT
子句通常位于该WHERE
子句之后。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句