簡體   English   中英

使用PHP在MySQL中搜索多個列

[英]Search multiple columns in MySQL using PHP

我已經以多種不同的方式搜索了Internet,但是找不到我的問題的答案。 我正在自學網站開發,並試圖創建一個在線房地產網站。

我嘗試搜索屬性時出現問題。 例如,我要搜索特定區域或郵政編碼中的所有屬性。 當我嘗試搜索多個字段時,例如地址行1,地址行2,郵政編碼和區域(例如London SW1V)。

以下是我當前正在使用的查詢,希望將其更改為符合我需要的方式:

SELECT property.propertyid, property.propertyname
FROM   property
WHERE  property.address_1 LIKE '%txtSearchField%'
    OR property.address_2 LIKE '%txtSearchField%'
    OR property.postcode  LIKE '%txtSearchField%'
    OR property.area      LIKE '%txtSearchField%'

它不是有效的方法,但對於流量低的頁面最簡單且有利:

SELECT property.propertyid, property.propertyname
FROM   property
WHERE  CONCAT(property.address_1, ' ',
              property.address_2, ' ',
              property.postcode, ' ',
              property.area) LIKE '%txtSearchField%'

這應該為您工作。

在此SQL查詢構造中,無論txtSearchField的值是txtSearchField (即使它為空),您都可以執行它。 您還忘記了將美元符號$放在此變量txtSearchField前面,這就是為什么您無法從輸入表單中獲得任何結果的原因,因為您總是搜索文本txtSearchField ,而不是變量$txtSearchField的內容。 (我猜您使用帶有HTML文本輸入的輸入表單txtSearchField )。 請記住,將HTML表單的方法設置為“ post”,因為如果省略它,則默認值為“ get”。

如果我說對了,您應該采用以下方式重新編寫代碼:

    <?php
    //Sanitize user input
    $txtSearchField = filter_var($_POST['txtSearchField'], FILTER_SANITIZE_STRING);
    //SQL query
    $query = "SELECT property.propertyid, property.propertyname
    FROM   property
    WHERE  CONCAT(property.address_1, ' ',
                  property.address_2, ' ',
                  property.postcode, ' ',
                  property.area) LIKE '%$txtSearchField%'" //see the $ sign here
//Finally, execute query and get result
$result = mysql_query ($query) or die ('SQL error occured: '.mysql_error());
while ($array = mysql_fetch_assoc($result)) {
  echo $result['address_1'].'/'.$result['address_2'].'/'.$result['postcode'].'/'.$result['area'].'<br/>';
}
    ?>

暫無
暫無

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

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