Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Какого вида массив при использовании функции mysql_fetch_array()?
 
 автор: Freddie_X   (22.01.2008 в 18:21)   письмо автору
 
 

Если делать запроса вида
$query = mysql_query('SELECT field_name FROM table_name');

то какой массив получается при
$result = mysql_fetch_array($query);

Одномерный, двухмерный и т.д.? И как можно добраться до нужного элемента? Не доезжает до меня
С
SELECT * FROM table_name WHERE field_name=value

всё понятно, одномерный.

   
 
 автор: DJ Paltus   (22.01.2008 в 21:02)   письмо автору
 
   для: Freddie_X   (22.01.2008 в 18:21)
 

Погляди его функцией print_r(), там понятно станет.

   
 
 автор: KPETuH   (22.01.2008 в 21:27)   письмо автору
 
   для: Freddie_X   (22.01.2008 в 18:21)
 

добраться проще всего так
<?
$query 
mysql_query('SELECT * FROM table_name');
while (
$result mysql_fetch_array($query))
{
    echo 
"<pre>";
    
print_r ($result);
}

   
 
 автор: cheops   (23.01.2008 в 00:20)   письмо автору
 
   для: Freddie_X   (22.01.2008 в 18:21)
 

Функция mysql_fetch_array() всегда возвращает одномерный массив, содержащий значения соответствующие одной записи в результирующей таблице.

   
 
 автор: bronenos   (23.01.2008 в 00:35)   письмо автору
 
   для: cheops   (23.01.2008 в 00:20)
 

...и сдвигая указатель на следующую запись

   
 
 автор: Freddie_X   (23.01.2008 в 00:36)   письмо автору
 
   для: cheops   (23.01.2008 в 00:20)
 

cheops, я так и думал.
НО!
$query = mysql_query('SELECT id FROM table_name'); // в этой таблице около 20 записей
$array = mysql_fetch_array($query);
echo $array[...]; // вместо ... любое число подставить, даёт совершенно не то.

проверил массив через print_r() и ужаснулся...
Array ( [0] => 1 [id] => 1 ) - вот что мне выдало. Хотя в этом массиве должны быть элементы 1,2,3,4 и так далее до 20. А тут всего 2 элемента и те одинаковые.
Не скажете, в чём подвох?

   
 
 автор: cheops   (23.01.2008 в 00:40)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 00:36)
 

Записи в результирующей таблице запроса SELECT id FROM table_name всегда имеют одно значение равное id. Поэтому mysql_fetch_array() возвращет одно значение id = 1, следующий вызов вернёт id = 2, третий id = 3 и т.д. пока записи не кончатся. Так как вы используется функцию mysql_fetch_array() без дополнительных параметров - она возвращает для каждого значения из результирующей таблицы два значение, одно с числовым индексом, второе - с ключом, равным имени столбца, отсюда массив имеет два элемента, значения которых всегда совпадает.

   
 
 автор: bronenos   (23.01.2008 в 00:40)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 00:36)
 

Ну да
Числовые ключи fetch_row
Строковые ключи fetch_ascos
Смешанные ключи fetch_array

   
 
 автор: Freddie_X   (23.01.2008 в 01:06)   письмо автору
 
   для: bronenos   (23.01.2008 в 00:40)
 

Ну хорошо, с этим понятно.
А как всё таки можно получить доступ к определённой записи?
Пример:
Нужно узнать значение поля id в 10 записи.

Я про это имел ввиду. Такое можно сделать?

   
 
 автор: KPETuH   (23.01.2008 в 05:58)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 01:06)
 

это лучше делать с помощью sql запроса есть же для этой записи какие-то характерные только для нее признаки как минимум id, но вообще посмтановка вопроса не правильна мне кажется....
>Нужно узнать значение поля id в 10 записи.

   
 
 автор: cheops   (23.01.2008 в 13:42)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 01:06)
 

Хм... поля в базе даннных перемешаны, поэтому не имеет значение порядок записей без сортировки. Если вы сортируете записи можно воспользоваться конструкцией LIMIT, например, 10 запись можно извлечь следующим образом
SELECT id FROM table_name
ORDER BY id
LIMIT 10, 1

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования