Достать все из таблицы в двумерный массив

12
stifler_x
На сайте с 19.06.2008
Offline
193
9448

Сразу скажу, что в ПХП я нуб )

Есть таблица в базе данных MySQL. Необходимо извлечь данные в двумерный массив.

Делаю так:

$data = mysql_query("SELECT * FROM `table` ORDER BY `id`",$db);

$a = mysql_fetch_array($data);
$i=0;
do {
$array[$i++] = $a;
}
while ($a = mysql_fetch_array($data));

Как сделать правильно?

MK
На сайте с 14.04.2009
Offline
104
#1

ну лучше вот так

while ($a = mysql_fetch_array($data)) {

$array[] = $a;

}

Продвижение сайтов (https://nsk-seo.ru/) в Яндекс и Гугл.
T
На сайте с 13.01.2009
Offline
50
#2

while ($array[] = mysql_fetch_array($data)) {

}

aleksey_php
На сайте с 17.03.2008
Offline
53
#3
Troytft:
while ($array[] = mysql_fetch_array($data)) {
}

Чтобы в последний элемент массива загнать false, возвращённый функцией mysql_fetch_array?

ТС, делайте как предложил MaxKis

[Удален]
#4

Я делал так для какого то проекта:


$newArr = array();
$i=0;
while($r=mysql_fetch_array($d))
{
$keys = array_keys($r);
foreach($keys as $key)
$newArr[$i][$key] = $r;
$i++;
}

по-моему найс ))

Prior
На сайте с 03.03.2008
Offline
194
#5
So1:
Я делал так для какого то проекта:

$newArr = array();
$i=0;
while($r=mysql_fetch_array($d))
{
$keys = array_keys($r);
foreach($keys as $key)
$newArr[$i][$key] = $r;
$i++;
}

по-моему найс ))

Изврат, а не найс.😒 "foreach не нужен" (с)

MaxKis:
ну лучше вот так
while ($a = mysql_fetch_array($data)) {
$array[] = $a;
}

Еще лучше добавить $array = array(); в начало. Т.к. если до этого в коде будет определен массив $array, то значения будут добавляться.

Ответы на вопрос - https://answers.net.pl
[Удален]
#6

а еще лучше

while ($arr[] = mysql_fetch_array($data)); :D

stifler_x
На сайте с 19.06.2008
Offline
193
#7

Спасибо всем.

[Удален]
#8
Prior:
Изврат, а не найс.😒 "foreach не нужен" (с)

Я же сказал - для какого-то проекта, а значит там это было оправдано (помню - по большей части это была имплементация технического дизайна). Если мне так нужно было сделать, то я видел это более логичным. Только вот в первом индексе у меня была ID of primary key

В итоге у вас получается массив, в котором первый индекс - ID, второй - поле из БД. Конечно я наврал немного, было что то вроде:

$newArr = array();

while($r=mysql_fetch_array($d))
{
$keys = array_keys($r);
$id = $r['id']
foreach($keys as $key)
if ($key != 'id')
$newArr[$id][$key] = $r[$key];
}

То есть у вас теперь есть сущности БД в массиве и можно делать так:

foreach($entries as $id=>$entry) :


<a href='click_to_view_full_version&id=$id'>.....$entry['title']

endforeach;

Ну это к примеру.

Способ


while ($r=mysql_fetch_array($d))
{
<a href="click_to_view_full_version&id=$r['id']">.....$r['title']
}

по-моему был неприемлем.

Prior
На сайте с 03.03.2008
Offline
194
#9


$newArr = array();
while($r=mysql_fetch_array($d)) $newArr[$r['id']] = $r;

А так почему нельзя? Да, в принципе в массиве будет лишний элемент "id", который вы не используете, но ничего страшно тут нет :) Избыточность кода хуже ИМХО.

[Удален]
#10

Так получится только недостаточность.

[id]=>array('0'=>'value1', '1'=>'value2', ..., )

или

А мне нужен был массив

[id]=>array('key1'=>'value1', 'key2'=>'value2',...) ну или так:

newArr[id]['key1'] = 'value1';

newArr[id]['key2'] = 'value2';

Вроде нигде не гоню. Если что поправьте. У нас просто тут 4.37 утра уже... добиваю весомую часть проекта - всю ночь на кофе... :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий