簡體   English   中英

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)時,它將返回所有表(從客戶中選擇*)。

添加了else條件並修復。 感謝您提供打印查詢建議。

用於檢查某物是否為空。 您可以使用empty()方法。

檢查一下:

空()

isset()僅檢查是否設置了對象/變量。 有關更多詳細信息,請檢查此

isset()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM