Я хочу добиться сохранения данных в виде ассоциативного массива из базы данных mysql в php, но когда я просто показываю результат в виде массива, он показывает мне последний вставленный результат в таблицу 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
)
)
Он показывает не все результаты, а только последний добавленный результат. Пожалуйста помоги.
Вам действительно не нужно больше никаких сложностей с этим, просто нажмите их нормально:
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.
Просто удалите цикл for из своего кода. Когда у вас есть цикл foor, внутренний цикл 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;
}