[英]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.