2012-04-13 134 views
0

你能解釋一下爲什麼當我嘗試這個查詢時,它只返回一半行嗎?選擇查詢,while循環不能正確返回所有行

例如,如果$記錄是由4個值構成的,它只會從數據庫中獲得第1行和第3行。

怎麼了?

   $query=mysql_query("SELECT * FROM ".DB_PREF."books WHERE book_id IN ('".$records."')"); 
       while($fetch=mysql_fetch_assoc($query)) 
       { 
        global $book_id, $book_title, $book_description, $book_author_id, $book_author_name, $book_author_surname; 
        $book_id=$fetch['book_id']; 
        $book_title=$fetch['book_title']; 
        $book_description=$fetch['book_description']; 
        $book_author_id=$fetch['book_author_id']; 
        $query=mysql_query("SELECT * FROM ".DB_PREF."profiles WHERE user_id='".$book_author_id."'"); 
        $fetch=mysql_fetch_assoc($query); 
        $book_author_name=$fetch['user_name']; 
        $book_author_surname=$fetch['user_surname']; 
        getModule('htmlmodule...'); 
       } 

回答

2

你是否在循環中覆蓋$ fetch變量?也許嘗試:

$fetch2=mysql_fetch_assoc($query); 

,或者甚至更好,使用您的SQL聯接:

$query=mysql_query("SELECT * FROM ".DB_PREF."books LEFT JOIN ".DB_PREF."profiles ON book_author_id = user_id WHERE book_id IN ('".$records."')"); 

然後就得到你想要的是單個查詢的一切。

+0

謝謝。我很愚蠢:P – 2012-04-13 17:26:15

0

MY DO WHILE

mysql_select_db($database_lolx, $lolx); 
$query_Recordset1 = "SELECT * FROM person"; 
$Recordset1 = mysql_query($query_Recordset1, $lolx) or die(mysql_error()); 
$row_Recordset1 = mysql_fetch_assoc($Recordset1); 
<table border="1"> 
    <tr> 
    <td>id</td> 
    <td>emal</td> 
    </tr> 
    <?php do { ?> 
    <tr> 
     <td><?php echo $row_Recordset1['id']; ?></td> 
     <td><?php echo $row_Recordset1['emal']; ?></td> 
    </tr> 
    <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?> 
</table>