<?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))
{
...
}}
} ?>
为什么这个代码不检查空字段?即使表单提交为空,它也会返回字段为空的结果。
我想到的唯一改进是trim()
:
if(isset($_POST[$field]) && trim($_POST[$field]) != '') {
然而,我确信这不是问题所在
您是否想过打印出结果查询
看,您正在编写一个程序来创建一些字符串(SQL查询(。但出于某种原因,从不对这个项目的直接结果感兴趣,而是通过一些间接结果来判断。可能是数据/查询逻辑产生了这样的结果,但查询本身可以吗?
如果查询仍然错误,请继续调试
回显所有涉及的内容-打印变量、条件结果、循环中的中间结果-并查找不一致
$query = "SELECT * FROM customer ";
if(count($conditions) > 0) {
$query .= "WHERE " . implode (' AND ', $conditions);
}
当表单提交为空($conditions=0(时,它将返回所有表(从客户中选择*(。
添加了其他条件并进行了修复。感谢您的打印查询建议。
用于检查某个内容是否为空。您可以使用empty((方法。
检查此项:
空((
isset((只检查该对象/变量是否已设置。有关更多详细信息,请查看此
isset((