我想实现将数据存储为来自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
)
)
它不会显示所有结果,只显示最后插入的结果。请帮忙。
答案 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;
}