<?php
if(isset($_POST['submit'])) {
$fields = array('field1', 'field2', 'field3');
$conditions = array();
foreach($fields as $field){
if(isset($_POST[$field]) && $_POST[$field] != '') {
$conditions[] = "`".$field."` like '%" . mysql_real_escape_string($_POST[$field]) . "%'";
}
}
$query = "SELECT * FROM customer ";
if(count($conditions) > 0) {
$query .= "WHERE " . implode (' AND ', $conditions);
}
$result = mysql_query($query);
$say = mysql_num_rows($result);
if ($say == 0) {
echo "<tr>no result.</tr>";
} else {
echo '...';
while($row = mysql_fetch_array($result))
{
...
}}
} ?>
为什么这段代码不能检查空字段?它返回具有空字段的结果,即使表单提交为空。
答案 0 :(得分:1)
我认为唯一的改进是trim()
:
if(isset($_POST[$field]) && trim($_POST[$field]) != '') {
但是,我确信这不是问题
你有没有想过打印出结果查询?如果查询仍然错误 - 继续调试。
回应所涉及的一切 - 打印变量,条件结果,循环中的中间结果 - 并查找不一致
答案 1 :(得分:0)
$query = "SELECT * FROM customer ";
if(count($conditions) > 0) {
$query .= "WHERE " . implode (' AND ', $conditions);
}
当表单提交为空($ conditions = 0)时,它返回所有表(select * from customer)。
添加了其他条件并已修复。感谢您提供打印查询建议。
答案 2 :(得分:-1)