如何将数据作为关联数组存储在php中的mysql数据库中

时间:2014-10-04 10:24:05

标签: php mysql arrays associative

我想实现将数据存储为来自php中的mysql数据库的关联数组,但是当我只是以数组形式显示结果时,它会向我显示最后在mysql表中插入的结果。我的代码: -

public function displayresult(){
    $result = mysql_query('SELECT * FROM user');
    $num = mysql_num_rows($result);
    if(mysql_num_rows($result) > 0){
        for($i=0;$i<=$num;$i++){        
            while($row=mysql_fetch_array($result)){
                $data[$i]['name']=$row['name'];
                $data[$i]['contact']=$row['contact'];
            }
        }
    }
    return $data;
}
print_r(displayresult());

以上代码显示的结果是: -

 Array
  (
  [0] => Array
    (
        [name] => jason
        [contact] => 4098979774
    )

)

它不会显示所有结果,只显示最后插入的结果。请帮忙。

2 个答案:

答案 0 :(得分:3)

你真的不需要另外一个复杂功能,只需正常推送它们:

public function displayresult(){
    $result = mysql_query('SELECT * FROM user');
    $num = mysql_num_rows($result);
    if(mysql_num_rows($result) > 0){  
        while($row = mysql_fetch_assoc($result)){ // use fetch_assoc 
            $data[] = array('name' => $row['name'], 'contact' => $row['contact']);
        }  
    }
    return $data;
}
print_r(displayresult());

或者更好:

public function displayresult(){
    $result = mysql_query('SELECT name, contact FROM user');
    $num = mysql_num_rows($result);
    if(mysql_num_rows($result) > 0){  
        while($row = mysql_fetch_assoc($result)){
            $data[] = $row;
        }  
    }
    return $data;
}
print_r(displayresult());

注意:顺便说一句,如果可能的话,请使用更好的扩展名mysqli或PDO。

答案 1 :(得分:1)

只需从代码中删除for循环即可。当你有for循环时,内部while循环会消耗结果,并且与所有数据相关的数据会被插入到同一个索引中。

public function displayresult(){
    $result = mysql_query('SELECT * FROM user');
    $num = mysql_num_rows($result);
    if(mysql_num_rows($result) > 0){
        /* loop removed */       
        while($row=mysql_fetch_array($result)){
            $data[]=array("name"=>$row['name'],"contact"=>$row['contact']);
        }

    }
    return $data;
}