Reputation: 919
I've searched the Internet numerous different ways, but cannot find the answer to my question. I am teaching myself website development and am trying to create an online real estate website.
My problem arises when I attempt to search for a property. For example, I want to search for all properties in particular area or postcode. When I attempt to search multiple fields such as address line 1, address line 2, postcode, and area (like London SW1V).
Below is the query I'm currently using, and hope to change it to work the way I need:
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%'
Upvotes: 3
Views: 8084
Reputation: 31829
In this SQL query construct you execute it no matter what is the value of txtSearchField
(even if it is empty). You also forgot to put the dollar sign $ on front of this variable txtSearchField
, that's why you cannot get any results from your input form, because you always search for text txtSearchField
, not the content of the variable $txtSearchField
. (I guess you use an input form with HTML text input which is called txtSearchField
). Remember to set your HTML form's method to "post", because if you omit it, the default is "get".
If I`m right, you should rework your code in this way:
<?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/>';
}
?>
Upvotes: 3
Reputation: 4926
Its not efficient way, but easiest and good for low traffic pages:
SELECT property.propertyid, property.propertyname
FROM property
WHERE CONCAT(property.address_1, ' ',
property.address_2, ' ',
property.postcode, ' ',
property.area) LIKE '%txtSearchField%'
This should work for you.
Upvotes: 4