2011-02-22 54 views
0

我想做一个php搜索查询。
首先放一句话,每一个字爆炸得到$name
然后我把$name查询来匹配我数据库中存在的所有名称。
如何使用if ($num_results > 0)如果我不确定有多少$name匹配并回显出来? (可能是$行[ '名称']为空,也许$行[ '名称']为1或2,我想一一)

$query = mysql_query("SELECT * FROM books 
    WHERE name LIKE '$name[0]' OR name LIKE '$name[1]' OR name LIKE '$name[2]' 
     OR name like '$name[3]' "); 
while ($row = mysql_fetch_array($query)) { 
    if ($num_results > 0) { 
    echo $row['name'][0] ; 
    } 
    if ($num_results > 1) { 
    echo $row['name'][1] ; 
    } 
    if ($num_results > 2) { 
    echo $row['name'][2] ; 
    } 
    if ($num_results > 3) { 
    echo $row['name'][3] ; 
    } 
} 

回答

2

如何:

$i = 0 
while($row = mysql_fetch_array($query)) { 
    echo $row['name'][$i]; 
    $i++; 
} 
4

使用:

mysql_num_rows($query); 

让行的,你从你的MySQL查询得到量

<?php if (mysql_num_rows($query)>0){?> 
Do stuff 
<? }else{ ?> 
We didn't find anything! 
<?php }?> 
1

我其实没有明白你真正想要的,但你的代码应该能理解这样的:

<?php 
$searchphrase="alex nick george"; 
// this: 
$names = explode(" ",$searchphrase); 
// produces the following: 
$names = array("alex","nick","george"); 
// so you can make the query: 
if(is_array($names)){ 
    $query = "SELECT * FROM books WHERE name IN ('".implode(",",$names)."') ORDER BY FIELD (name,".implode(",",$names).")"; 
    $result = mysql_query($query) or die(mysql_error()); 
    if (mysql_num_rows($result) == 0){ 
     // no results 
    }else{ 
     while ($row = mysql_fetch_array($result)) { 
      echo $row['name']; 
     } 
    } 
} 
?> 

或许,如果你描述它我们可以更好地帮助更有效。