2010-12-07 109 views
3

我有這個簡單的PHP代碼:的MySQL只返回一行

$query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5"); 
    $query2 = mysql_fetch_assoc($quer); 
    print_r($query2); 

它只返回此:

Array ([title] => Kill Bill Vol 1. [url_title] => kill_bill_vol_1) 

我有表3500+行,並運行在phpMyAdmin作品SQL完美。

回答

7
$query = mysql_query("SELECT `title`, 
          `url_title` 
         FROM `fastsearch` 
         WHERE `tags` 
          LIKE '%$q%' 
         LIMIT 5"); 

while ($row = mysql_fetch_assoc($query)) { 
    print_r($row); 
} 
  • 你在你的例子
  • mysql_fetch_assoc()拼錯$query每次調用時將返回一行,並FALSE外出時的行。通過在條件中爲它分配一個變量來利用這一點。在while()循環中,$row將成爲當前行。
+0

我會接受在3分鐘內你的答案,當它讓我。我已經使用foreach,但我不知道如何使用while: – wintercounter 2010-12-07 00:12:51

+0

foreach(mysql_fetch_assoc($ quer)as $ row => $ item){arrResults [$ row] = $ item; } 我需要這個,因爲我使用JSON數據和json_encode函數。 – wintercounter 2010-12-07 00:13:42

1

方法FETCH_ASSOC()返回一行,你需要用它

2

正確的,你不能正確讀取結果循環。

mysql_fetch_assoc()一次只返回一行。使用循環來讀取所有行。

$query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5"); 

$resultSet = array(); 
while ($cRecord = mysql_fetch_assoc($query)) { 
    $resultSet[] = $cRecord; 
} 
2

由於文檔http://php.net/manual/en/function.mysql-fetch-assoc.php狀態:

mysql_fetch_assoc — Fetch a result row as an associative array 

所以,如果你想遍歷結果,你必須使用一個循環如:

while ($row = mysql_fetch_assoc($result)) { 
    echo $row["title"]; 
    echo $row["url_title"];  
} 
0

mysqli_fetch_assoc()是其獲取多種功能記錄 並通過print_r()顯示。

$query = "SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5"; 
$result = mysqli_query($conn,$query); 
while(null ! == ($query = mysqli_fetch_assoc($result))){ 
    print_r($query); 
}