2011-07-22 20 views
1

dbからデータを選択して配列に格納したい。 dbテーブルに「キーワード」という列があるとします。キーワード列が「自然」のような行をすべて選択したいデータベースから選択して配列に格納する

私は、次のコードをしようとしています:

<? 
    $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) 

    ?> 

だから、DBからの結果は、私は、配列に格納する必要がある唯一つのキーワード「自然」を返す必要があります。

  1. なぜ同じ文字列を2回格納するのですか?性質の用語に似た、他の列はDBにありません。
  2. アレイの最初の文字のみを保存するのはなぜですか? 「n」の代わりに「自然」を保存しないでください。

これを修正するのを手伝ってください。代わりにmysql_fetch_array

答えて

2

使用mysql_fetch_assocは、あなただけの結果セットの数値添字配列としての最初のレコードを取得するあなたの解決策では

$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' ]; 
} 

のようなものであるべき。

Btw - ワイルドカードで始まるLIKEクエリではインデックスを使用できないことにご注意ください。

関連する問題