2013-02-13 155 views
1

帮助是必需的。 我正在准备一个搜索表单。需要帮助在选择查询 是否有可能我可以搜索“建设”字在我的表中的所有列 下面是我试过的查询。mysql select查询搜索多列中的一个词

$search = $_POST['search']; 
$sql = mysql_query("SELECT * FROM property WHERE posthead,requestto,ptype,requestby,owner,bed,bath,price,sqft,descp = '".$search."'"); 
$result = (mysql_fetch_array($sql)); 

echo "Post Head : ". $result['posthead']."<br />"; 
echo "Request To : ". $result['requestto']."<br />"; 
echo "Type : ". $result['ptype']."<br />"; 
echo "Request By : ". $result['requestby']."<br />"; 
echo "Owner : ". $result['owner']."<br />"; 
echo "Bed : ". $result['bed']."<br />"; 
echo "Bath : ". $result['bath']."<br />"; 
echo "Price : ". $result['price']."<br />"; 
echo "Sq ft. : ". $result['sqft']."<br />"; 
echo "Description : ". $result['descp']."<br />"; 
+0

是的,阅读:http://dev.mysql.com/doc/refman/5.0/en/where-optimizations.html – Jon 2013-02-13 04:48:54

回答

0

尝试SELECT * FROM property WHERE posthead = $search OR requestto = $search ...

+0

多数民众赞成在很大程度上。它为我工作。感谢afarazit :) – 2013-02-13 05:05:49

2
$sql = mysql_query("SELECT * FROM property WHERE posthead = '".$search."' OR requestto= '".$search."' OR ptype= '".$search."' OR requestby = '".$search."' OR owner= '".$search."' OR bed = '".$search."' OR bath= '".$search."' OR price= '".$search."' OR sqft,descp = '".$search."'"); 

,改变$result = (mysql_fetch_array($sql));$result = (mysql_fetch_assoc($sql));

注:

  1. 查询很容易受到SQL注入
  2. mysql_ *功能已被弃用使用mysqli_ *或PDO
0

因为要创建您可能希望能够找到的部分匹配,而不是确切的词记录的搜索形式。为了做到这一点,你可以使用LIKE

$q = "SELECT * FROM property 
WHERE posthead LIKE '%$search%' OR 
     requestto LIKE '%$search%' OR 
     ptype  LIKE '%$search%' OR 
     requestby LIKE '%$search%' OR 
     owner  LIKE '%$search%' OR 
     bed  LIKE '%$search%' OR 
     bath  LIKE '%$search%' OR 
     price  LIKE '%$search%' OR 
     sqft  LIKE '%$search%' OR 
     descp  LIKE '%$search%'"; 

$sql = mysql_query($q); 
1

试试这个:

更好的方法是使用"CONCAT"为列:

$ SQL =请求mysql_query(“SELECT * FROM property WHERE CONCAT(posthead,requestto,ptype,requestby,owner,bed,bath,price,sqft,descp) LIKE“%。$ search。”%'“);

OR将工作,但CONCAT可以减少查询量。