从数据库中选择并存储在数组中

时间:2011-07-22 07:13:07

标签: php mysql arrays select

我想从db中选择一些数据并存储在数组中。假设我的db表中有一个列“keyword”。我想选择关键字列就像“自然”的所有行。

我正在尝试以下代码:

<?
    $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的结果应该只返回一个关键字'nature',我需要将它存储在数组中。

  1. 为什么两次存放相同的字符串? db中没有任何其他行类似于术语nature。
  2. 为什么它只在数组中存储第一个字母?不是它存储“自然”而不是“n”?
  3. 请帮我解决这个问题。

2 个答案:

答案 0 :(得分:4)

应该像

$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查询不能使用任何索引吗?

答案 1 :(得分:3)

使用mysql_fetch_assoc代替mysql_fetch_array