php-mysql多字段搜索空字段


php mysql multiple field search empty fields

<?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((