2012-04-02 156 views
1

我新的PHP和我沒有正式的研究,因爲我研究它自己 我有一個問題,我希望有人能幫助我.. :(PHP MySQL查詢在一個while循環

(「何處」,「是」,「你」等等.....)

我已經和陣列

$陣列=陣列;

,我想搜索的所有數據庫那些值

like

$sql_res1 =mysql_query("select * from lady_vega where react like '%$array[0]%'"); 
$sql_res2 =mysql_query("select * from lady_vega where react like '%$array[1]%'"); 
$sql_res3 =mysql_query("select * from lady_vega where react like '%$array[2]%'"); 

....等等

有次,數組沒有值的確切數目。

,有人對我說,循環可能是一個幫助...
,但我不知道如何...

,我也希望每個MySQL查詢的結果將保存這樣使我我可以dentify其結果是從...

$row1 = mysql_fetch_array($sql_res1); 
$row2 = mysql_fetch_array($sql_res2); 
$row3 = mysql_fetch_array($sql_res3); 

...等等

我希望會有一個可能的解決方案/技術這個..

回答

2

嘗試使用以下:

$sql = "select * from lady_vega where react like '%".implode("%' OR react LIKE '%", $array)."%'" 
$sql_res1 =mysql_query($sql); 

你可以將多個凡在你的查詢中使用ORAND條款:

WHERE字段= '值' 和Field2 = '值'

+1

這是正確的答案,但我建議,也許你正在尋找一個「IN」查詢,而不是「像......一樣反應」。最終你想要WHERE子句來讀取這樣的內容:「WHERE反應IN(」where「,」are「,」you「,」等等.....「);」 – jn29098 2012-04-02 01:53:02

+1

如果他真的想做LIKE比較,IN在這裏不會有幫助。這樣可以正常工作,或者你可以構建一個正則表達式,如果你構建了大量的OR語句,它可能會更有效率。檢查這裏是如何工作的:http://stackoverflow.com/questions/1127088/mysql-like-in – 2012-04-02 01:59:23

+0

工作非常順利先生...但這不是我需要的那種方式.... – 2012-04-02 02:10:24

0

你可以例如,嘗試使用foreach循環。

$terms = explode(",",$array); 

$query = "select * from lady_vega where "; 

foreach($terms as $each){ 
    $i++; 
    if($i ==1){ 
    $query.="react LIKE '%$each%'"; 

    } 
    else 
     $query .= "OR react LIKE '%$each%' "; 


    } 
+0

不與我合作先生...它顯示所有結果...不太準確.... – 2012-04-02 01:52:49

0
$sql = ""; 
for($i=0;$i<count($array);$i++){ 
    $sql.="select *,'".$array[$i]."' as keyword from lady_vega where react like '%".$array[$i]."%'"; 
    if($i!=count($array)-1) $sql .= " union ";  
} 

$result = mysql_fetch_array(mysql_query($sql)); 

$last_keyword=""; 
$index = 1; 
foreach($result as $row){ 
    if($last_keyword!=$row["keyword"]){ 
     $index++; 
     ${"row".$index} = array(); 
    } 
    array_push(${"row".$index},$row); 
} 

,那麼你會得到一個額外的「關鍵字」列相同的結果。