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
Форумы портала PHP.SU :: Версия для печати :: Кладем аккуратнов массив
Форумы портала PHP.SU » PHP » Пользовательские функции » Кладем аккуратнов массив

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

1. DeepVarvar - 08 Ноября, 2010 - 09:18:41 - перейти к сообщению
Я искал пример кода который при явно не указанных в запросе именах полей таблицы автоматом аккуратно вкладывает все в ассоциативный массив. Были примеры как достать имена полей, кол-во полей, какую-то служебную инфу о полях...
Например есть таблица `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.  
2. Мелкий - 08 Ноября, 2010 - 09:33:44 - перейти к сообщению
ммм?
Цитата:
$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. }
3. DeepVarvar - 08 Ноября, 2010 - 09:43:18 - перейти к сообщению
Мелкий Не понял ... Что самое странное я так делал, значит делал что-то не так, поэтому и расписал все пошагово... )))

 

Powered by ExBB FM 1.0 RC1