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]   

> Описание: Ну почему выводит только первый?
Jonathan
Отправлено: 16 Марта, 2012 - 19:42:10
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2011  


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




Здравствуйте, уважаемые.

Задача:
Создать простой одномерный массив с элементами, взятыми из одного столбца таблицы БД.

То что я имею на данный момент:
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT $pole FROM $table";
  2. $q = mysql_query($query, $db);
  3. $content = mysql_fetch_row($q);
  4. if(!$q) trigger_error(mysql_error().$query);
  5. print_r($content);


Проблема:
Выводит гад только первый элемент!! с индексом 0 соответственно. Последующие элементы просто не создает. Ошибок не выводит, соединение 100% правильное, проверял. в PhpMyAdmin всё просто великолепно показывает.

Обращение:
Я знаю, можно воспользоваться циклом (что меня не очень устраивает), но дело не в этом. Я хочу знать, почему пхп выводит только первый элемент?! когда в ПМА выводит все сразу. Ну, и жду простых решений.
 
 Top
Самогонщик
Отправлено: 16 Марта, 2012 - 19:46:04
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


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




Потому что функция mysql_fetch_row возвращает один (текущий) результат из выборки, в данном случае в виде массива с одним элементом.
 
 Top
DelphinPRO
Отправлено: 16 Марта, 2012 - 19:47:42
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




Jonathan пишет:
Я хочу знать, почему пхп выводит только первый элемент?! когда в ПМА выводит все сразу
а вы код PMA смотрели?
там те же циклы
Jonathan пишет:
Ну, и жду простых решений.

самый простой пример в описании функции mysql_fetch_array


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
snikers987
Отправлено: 16 Марта, 2012 - 19:47:53
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




А чем цикл то не подходит?


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Самогонщик
Отправлено: 16 Марта, 2012 - 19:48:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


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




Вот простое решение, можно без первой строчки:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $res = array();
  2. while($row = mysql_fetch_row($q))
  3.   $res[] = $row[0];
 
 Top
Jonathan
Отправлено: 16 Марта, 2012 - 19:51:26
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2011  


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




Самогонщик пишет:
Потому что функция mysql_fetch_row возвращает один (текущий) результат из выборки, в данном случае в виде массива с одним элементом.


Т.е. это закон функции? Тогда прошу прощения за глупую тему.

Не подскажете как организовать цикл по проще?

Есть чуток корявые соображения:

PHP:
скопировать код в буфер обмена
  1. $q = mysql_query ("SELECT content FROM glag");
  2. for ($c=0; $c<mysql_num_rows($q); $c++)
  3. {
  4. $f[] = mysql_fetch_row($q);
  5. };
  6. print_r($f);
 
 Top
snikers987
Отправлено: 16 Марта, 2012 - 19:54:22
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




Jonathan while


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Самогонщик
Отправлено: 16 Марта, 2012 - 19:56:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


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




Jonathan пишет:
Т.е. это закон функции?
Это не закон, это её спецификация. Работает она так в общем, о чём в жутко секретной справке и написано.

Jonathan пишет:
Не подскажете как организовать цикл по проще?
Можно использовать тот факт, что mysql_fetch_row вернёт фальш после получения последнего результата из выборки, что я и продемонстрировал.
 
 Top
Jonathan
Отправлено: 16 Марта, 2012 - 19:57:01
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2011  


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




Никак не ожидал такой быстрой реакции Ха-ха


Самогонщик пишет:
Вот простое решение, можно без первой строчки:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $res = array();
  2. while($row = mysql_fetch_row($q))
  3.   $res[] = $row[0];


Спасибо, он вполне подходит!
 
 Top
Самогонщик
Отправлено: 16 Марта, 2012 - 19:58:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


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




На правах шутки
CODE (htmlphp):
скопировать код в буфер обмена
  1. $query = "SELECT $pole FROM $table";
  2. for($q = mysql_query($query, $db); $content = mysql_fetch_row($q); $f[] = mysql_fetch_row($q));
 
 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