Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Кладем аккуратнов массив

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Мне нужно было простое решение
DeepVarvar Супермодератор
Отправлено: 08 Ноября, 2010 - 09:18:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Я искал пример кода который при явно не указанных в запросе именах полей таблицы автоматом аккуратно вкладывает все в ассоциативный массив. Были примеры как достать имена полей, кол-во полей, какую-то служебную инфу о полях...
Например есть таблица `users`:
id | name | lastname
1 | nik1 | niknik1
2 | nik2 | niknik2

Но имена полей мы в запросе явно не указываем (SELECT * FROM `users`), а на выходе имеем аккуратный ассоциативный массив вида:
$data[0]['id'] == 1
$data[0]['name'] == nik1
$data[0]['lastname'] == niknik1
$data[1]['id'] == 2
$data[1]['name'] == nik2
$data[1]['lastname'] == niknik2

ну и т.д....

Собственно функция получилась предельно простой и ясной, в отличии примеров и ПОЛУпримеров которые я выискивал в сети. Выложу тут, вдруг кому понадобится:
PHP:
скопировать код в буфер обмена
  1. function assocdump($query) {
  2.         $result = mysql_query($query);
  3.         $k = 0;
  4.         while ($row = mysql_fetch_assoc($result)) {
  5.                 $e = 0;
  6.                 while ($e < mysql_num_fields($result)) {
  7.                         $f = mysql_fetch_field($result,$e);
  8.                         $data[$k][$f->name] = $row[$f->name];
  9.                         $e++;
  10.                         }
  11.                 $k++;
  12.                 }
  13.         mysql_free_result($result);
  14.         return $data;
  15.         }
  16.  
 
 Top
Мелкий Супермодератор
Отправлено: 08 Ноября, 2010 - 09:33:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




ммм?
Цитата:
$data[0]['id'] == 1
$data[0]['name'] == nik1
$data[0]['lastname'] == niknik1
$data[1]['id'] == 2
$data[1]['name'] == nik2
$data[1]['lastname'] == niknik2

Таки отдаст тот же самый вывод:
PHP:
скопировать код в буфер обмена
  1. function assocquery($query) {
  2. $res = mysql_query($query);
  3. $arr = array();
  4. while ($line = mysql_fetch_assoc($res)) $arr[] = $line;
  5. return $arr;
  6. }


-----
PostgreSQL DBA
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Ноября, 2010 - 09:43:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Мелкий Не понял ... Что самое странное я так делал, значит делал что-то не так, поэтому и расписал все пошагово... )))

(Отредактировано автором: 08 Ноября, 2010 - 09:43:54)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB