搜索表单php/sql多输入
我对搜索表单有问题。只有当我使用所有4个字段时,它才有效,但如果一个字段为空,while循环将回荡出表中的所有记录 有人能帮我吗 这是我的搜索函数的php代码搜索表单php/sql多输入,php,html,sql,forms,search,Php,Html,Sql,Forms,Search,我对搜索表单有问题。只有当我使用所有4个字段时,它才有效,但如果一个字段为空,while循环将回荡出表中的所有记录 有人能帮我吗 这是我的搜索函数的php代码 <?php if (isset($_POST['cerca'])){ $cerca_tt = $_POST['tt_carrier']; $cerca_risorsa = $_POST['risorsa_cerca']; $cerca_team = $_POST['team_cerca']; $
<?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); ?>
如果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."'";
}
etc..//如果只提供一个搜索参数,其余为空字符串(用%包装),则实际上是在搜索所有内容。您需要建立您的查询。例如(简单):
while循环在哪里?这是if($sql\u cerca){
是多余的。它只是一个字符串,你知道,你应该看一看并解决它,我在上面的代码中使用了4个输入字段,现在我用1个字段搜索我需要的所有值。解决了,我在上面的代码中使用了4个输入字段,现在我用1个字段搜索我需要的所有值。解决了,我在上面的代码中使用了4个输入字段,现在我只需搜索一个字段,就可以找到我需要的所有值。
$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);
}