2011-07-22 49 views
1

我想從數據庫中選擇一些數據並將其存儲在數組中。假設我的數據庫表中有一列「關鍵字」。我想選擇關鍵字列就像「自然」的所有行。從數據庫中選擇並存儲在數組中

我想下面的代碼:

<? 
    $term= "nature";  
    $arr = array(); 

    $sql = "select keyword from keywords where keyword LIKE '%$term%'"; 
    $result = mysql_query($sql) or die(mysql_error()); 
    $rows = mysql_fetch_array($result); 
    foreach ($rows as $row){ 
      array_push($arr, $row['keyword']); 
     } 

    print_r($arr); //output: Array ([0] => n [1] => n) 

    ?> 

因此,從數據庫的結果應該只返回一個關鍵詞「自然」,我需要在陣列來存儲。

  1. 爲什麼它存儲相同的字符串兩次?數據庫中沒有任何類似於術語「自然」的其他行。
  2. 爲什麼它只在數組中存儲第一個字母?它不是存儲「自然」而不是「n」?

請幫我解決這個問題。

回答

3

應該像

$term = "nature";  
$arr = array(); 
$sql = "select keyword from keywords where keyword LIKE '%$term%'"; 
$result = mysql_query($sql) or die(mysql_error()); 
while($row = mysql_fetch_assoc($result)) { 
arr[] = $row[ 'keyword' ]; 
} 

在您的解決方案,你只能取從第一個記錄結果集的數字索引數組。

順便說一句 - 你知道一個以通配符開頭的LIKE查詢不能使用任何索引?

2

使用mysql_fetch_assoc代替mysql_fetch_array

相關問題