Mysql fetch array query

Mysql fetch array query

mysql_fetch_array — Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба

Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:

Описание

Возвращает массив, соответствующий обработанному ряду результата запроса и сдвигает внутренний указатель данных вперед.

Список параметров

Обрабатываемый результат запроса. Этот результат может быть получен с помощью функции mysql_query() .

Тип возвращаемого массива. Является константой и может принимать следующие значения: MYSQL_ASSOC , MYSQL_NUM и MYSQL_BOTH .

Возвращаемые значения

Возвращает массив строк, соответствующих обработанному ряду результата запроса, или FALSE , если рядов больше нет. Тип возвращаемого массива зависит от значения параметра result_type . При использовании MYSQL_BOTH (по умолчанию), вы получите массив, состоящий как из ассоциативных индексов, так и из численных. MYSQL_ASSOC вернёт только ассоциативные индексы (аналогично функции mysql_fetch_assoc() ), а MYSQL_NUM — только численные (аналогично функции mysql_fetch_row() ).

Если несколько колонок в результате будут иметь одинаковые названия, то будет возвращена последняя колонка. Чтобы получить доступ к другим колонкам с тем же именем, используйте численные индексы массива или псевдонимы в запросе. В случае псевдонимов используйте именно их — вы не сможете использовать настоящие имена колонок.

Примеры

Пример #1 Запрос с применением псевдонимов для дублирующихся имен колонок

Пример #2 mysql_fetch_array() с MYSQL_NUM

( "localhost" , "mysql_user" , "mysql_password" ) or
die( "Ошибка соединения: " . mysql_error ());
mysql_select_db ( "mydb" );

$result = mysql_query ( "SELECT id, name FROM mytable" );

while ( $row = mysql_fetch_array ( $result , MYSQL_NUM )) <
printf ( "ID: %s Имя: %s" , $row [ 0 ], $row [ 1 ]);
>

Пример #3 mysql_fetch_array() с MYSQL_ASSOC

( "localhost" , "mysql_user" , "mysql_password" ) or
die( "Ошибка соединения: " . mysql_error ());
mysql_select_db ( "mydb" );

$result = mysql_query ( "SELECT id, name FROM mytable" );

while ( $row = mysql_fetch_array ( $result , MYSQL_ASSOC )) <
printf ( "ID: %s Имя: %s" , $row [ "id" ], $row [ "name" ]);
>

Читайте также:  Naruto shippuden ultimate ninja storm 4 характеристики

Пример #4 mysql_fetch_array() с MYSQL_BOTH

( "localhost" , "mysql_user" , "mysql_password" ) or
die( "Ошибка соединения: " . mysql_error ());
mysql_select_db ( "mydb" );

$result = mysql_query ( "SELECT id, name FROM mytable" );

while ( $row = mysql_fetch_array ( $result , MYSQL_BOTH )) <
printf ( "ID: %s Имя: %s" , $row [ 0 ], $row [ "name" ]);
>

Примечания

Замечание: Производительность

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

Замечание: Имена полей, возвращаемые этой функцией являются регистро-зависимыми.

Замечание: Эта функция устанавливает NULL-поля в значение NULL PHP.

Смотрите также

  • mysql_fetch_row() — Обрабатывает ряд результата запроса и возвращает массив с числовыми индексами
  • mysql_fetch_assoc() — Возвращает ряд результата запроса в качестве ассоциативного массива
  • mysql_data_seek() — Перемещает внутренний указатель в результате запроса
  • mysql_query() — Посылает запрос MySQL

(PHP 3, PHP 4, PHP 5)

mysql_fetch_array — Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.

Описание array mysql_fetch_array ( resource result [, int result_type] )

Возвращает массив с обработанным рядом результата запроса, или FALSE , если рядов больше нет.

Если несколько колонок в результате будут иметь одинаковые названия, последняя колонка будет возвращена. Чтобы получить доступ к первым, используйте численные индексы массива или алиасы в запросе. В случае алиасов используйте именно их — вы не сможете использовать настоящие имена колонок, как например не сможете использовать ‘field’ в нижеописанном примере.

Пример 1. Запрос с дублирующимися именами колонок

select table1.field as foo, table2.field as bar from table1, table2

Второй опциональный аргумент result_type в функции mysql_fetch_array() — константа и может принимать следующие значения: MYSQL_ASSOC, MYSQL_NUM и MYSQL_BOTH. Эта возможность добавлена в PHP 3.0.7. Значением по умолчанию является: MYSQL_BOTH.

Используя MYSQL_BOTH, вы получите массив, состоящий как из ассоциативных индексов, так и из численных. MYSQL_ASSOC вернёт только ассоциативные соответствия (аналогично функции mysql_fetch_assoc() и MYSQL_NUM только численные (аналогично функции mysql_fetch_row() ).

Замечание: Имена полей, возвращаемые этой функцией, регистро-зависимы .

Пример 2. mysql_fetch_array() с MYSQL_NUM

Читайте также:  Gigabyte gv rx13p256de rh характеристики
( "localhost" , "mysql_user" , "mysql_password" ) or
die( "Could not connect: " . mysql_error ());
mysql_select_db ( "mydb" );

$result = mysql_query ( "SELECT id, name FROM mytable" );

while ( $row = mysql_fetch_array ( $result , MYSQL_NUM )) <
printf ( "ID: %s Name: %s" , $row [ 0 ], $row [ 1 ]);
>

mysql_free_result ( $result );
?>

Пример 3. mysql_fetch_array() с MYSQL_ASSOC

( "localhost" , "mysql_user" , "mysql_password" ) or
die( "Could not connect: " . mysql_error ());
mysql_select_db ( "mydb" );

$result = mysql_query ( "SELECT id, name FROM mytable" );

while ( $row = mysql_fetch_array ( $result , MYSQL_ASSOC )) <
printf ( "ID: %s Name: %s" , $row [ "id" ], $row [ "name" ]);
>

mysql_free_result ( $result );
?>

Пример 4. mysql_fetch_array() с MYSQL_BOTH

( "localhost" , "mysql_user" , "mysql_password" ) or
die( "Could not connect: " . mysql_error ());
mysql_select_db ( "mydb" );

$result = mysql_query ( "SELECT id, name FROM mytable" );

while ( $row = mysql_fetch_array ( $result , MYSQL_BOTH )) <
printf ( "ID: %s Name: %s" , $row [ 0 ], $row [ "name" ]);
>

I am trying to find out which is the proper way to fetch data from my database. Either way works, but what’s the difference; an in-depth explanation?

versus the function below.

This is something I’ve always wanted to know.

3 Answers 3

The difference is you’re re-assigning the variables in the first example. But you could just say:

Or you could pull out a hash

The right way depends on the application or your preference, I personally avoid the numeric indexed arrays unless I specifically need them. Who wants to try to keep a mental tab of what data is in which index?

The difference is that fetch_array extracts an array containing BOTH numerical and associative indexes (unless you provide an extra option to tell it otherwise), while fetch_row only gets numerical indexes and fetch_assoc only gets associative indexes. Usually, you don’t want both.

Читайте также:  Mail servers net ru

Use fetch_assoc instead of fetch_array — that ONLY gets you an array with associative indexes. That means it’ll run a bit faster (it has to do less work), but the code will be just as clear.

From a functional perspective, the difference is minimal. However, the former has the problem that you’re fetching more from the database than you need (SELECT *). It’s generally recommended not to select more than you actually need.

There’s no much difference internally. Both ordinal positions and column names are available in the result set metadata within the MySQL client API, regardless.

Regarding usage, both can be handy in different circumstances. Referencing columns by name is more mnemonic, results in (semi-) self-documenting code, allows you to change the position or number of columns in the query without breaking your code, etc.

But fetching by ordinal is hand too sometimes. For example:

Now you have two columns with the same name in the result set. If you fetch an associative array, one overwrites the other because an assoc array can only have one value per key. So $row["name"] is one of the names, and you don’t necessarily know which it’s going to be.

Now you have a column that has no alias, and depending on the RDBMS brand you use, it could invent a funny-looking alias automatically, or else just use the whole expression as the key for the assoc array. So it’s nice to be able to use ordinal position instead of column name in this case.

(It’s funny how my writing style becomes more informal and chatty when I’m listening to the StackOverflow podcast while I’m writing.)

Ссылка на основную публикацию
M3u8 чем открыть на андроид
вкл. 13 Август 2018 . Опубликовано в Менеджеры закачек M3U8 Loader - Программа скачает видео в несколько потоков. Для того...
Jquery как удалить элемент
С jQuery легко удалить существующие элементы HTML. Удалите Элементы/Контент Чтобы удалить элементы и контент, существует два основных метода jQuery: remove()...
Jquery последний элемент массива
Предположим, что у вас есть массив, подобный этому: Как получить последний элемент в массиве? В данном случае массив состоит из...
M2040dn печатает белые листы
Сделаем качество печати Kyocera как по заводу В блоге я уже неоднократно говорил о своей любви к печатным аппаратам японской...
Adblock detector