我的搜索表单存在问题。它只有在我使用所有4个字段时才有效,但如果一个字段为空,则while循环会回显所有表的记录。
有人可以帮帮我吗?
这是我的搜索功能的PHP代码
<?php
if (isset($_POST['cerca'])){
$cerca_tt = $_POST['tt_carrier'];
$cerca_risorsa = $_POST['risorsa_cerca'];
$cerca_team = $_POST['team_cerca'];
$cerca_linea = $_POST['linea_cerca'];
$sql_cerca = "SELECT * FROM normal WHERE
tt LIKE '%".$cerca_tt."%'
OR risorsa LIKE '%".$cerca_risorsa."%'
OR team LIKE '%".$cerca_team."%'
OR linea LIKE '%".$cerca_linea."%'";
if($sql_cerca) {
$trovati = mysql_query($sql_cerca); ?>
答案 0 :(得分:0)
如果POST为空,则变量为空,因此所有内容都匹配'%%'
例如,如果$ cerca_tt为空。您的查询将是
"SELECT * FROM normal WHERE tt like '%%'"
匹配所有内容。
根据POST响应创建查询。
$sel = "SELECT * from normal";
//您需要处理查询的WHERE部分。
if (!empty($cerca_tt)){
$sel .= " OR tt like '%".$cerca_tt."'";
}
等.... ///
答案 1 :(得分:0)
如果你只提供一个搜索参数,其余的是空字符串,你用%包装,你就可以有效地搜索所有内容。您需要构建查询。例如(简单):
$sqlParts = [];
if(isset($_POST['tt_carrier'])) {
$sqlParts[] = "tt LIKE '%".$cerca_tt."%'";
}
if(isset($_POST['risorsa_cerca'])) {
$sqlParts[] = "risorsa LIKE '%".$cerca_risorsa."%'";
}
if(isset($_POST['team_cerca'])) {
$sqlParts[] = "team LIKE '%".$cerca_team."%'";
}
if(isset($_POST['team_cerca'])) {
$sqlParts[] = "linea LIKE '%".$linea_cerca."%'";
}
if(!empty($sqlParts)) {
$sql = "SELECT * FROM normal WHERE " . implode(' OR ', $sqlParts);
}