2012-04-02 155 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); 
} 

,那么你会得到一个额外的“关键字”列相同的结果。