Подтвердить что ты не робот

Mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_object

Все функции очень похожи:

mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object()

Недавно я начал использовать mysql_fetch_object, поскольку я делаю много OOP с PHP.

Но каковы мнения людей, по которым лучше всего использовать и почему, и, возможно, в каком сценарии лучше всего их использовать.

Спасибо за ваши мысли!

4b9b3361

Ответ 1

mysql_fetch_array предоставит вам массив, который может иметь как ключи:

  • оба числа и имена столбцов при использовании MYSQL_BOTH
  • имена столбцов, используя MYSQL_ASSOC - в этом случае вы получите то же самое, что получаете при использовании mysql_fetch_assoc
  • только числа (в зависимости от порядка столбцов в запросе), если используется MYSQL_NUM

Получение результатов, индексированных именами столбцов, является, пожалуй, самым полезным решением - проще в использовании.

Но получение результатов, проиндексированных положением полей в предложении select, интересно в одном месте: когда у вас несколько столбцов с одинаковым именем или псевдонимом.
В этом случае, поскольку у вас не может быть двух записей с одним и тем же индексом в массиве, вы сможете получить доступ только к одному из этих столбцов, используя имя столбца в качестве индекса.
Для других столбцов с таким же именем вам придется использовать числовые индексы.

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


mysql_fetch_assoc получит массив с именами столбцов в виде ключей и данными как значения.

Нечего сказать, на самом деле.


И mysql_fetch_object будет получать ваши объекты взамен.


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

Если вы используете массивы как контейнеры данных, вы можете просто перейти с первого.

Ответ 2

mysql_fetch_array() выбирает строку результатов как ассоциативный массив, числовой массив или и то, и другое. Он возвращает массив строк, соответствующий выбранной строке, или FALSE, если больше строк нет. Тип возвращаемого массива зависит от того, как определяется $result_type.

Используя MYSQL_NUM, вы получаете только числовые индексы (в виде $row [0], $row 1 и т.д.), то есть числовой массив.

Используя MYSQL_ASSOC, вы получаете только ассоциативные индексы (в виде $row [ "id" ], $row [ "name" ] и т.д.), т.е. ассоциативный массив.

Используя MYSQL_BOTH (по умолчанию), вы получите массив с ассоциативными и числовыми индексами. (как $row [0], $row [ "name" ] и т.д.), то есть как числовой массив, так и ассоциативный массив.

mysql_fetch_assoc() выбирает строку результатов как ассоциативный массив. (имена столбцов в качестве ключа).

mysql_fetch_object() выбирает строку результата как объект.

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

Для меня есть преимущества использования mysql_fetch_assoc(), в котором вы можете использовать функции массива, такие как array_walk и uasort().

Ответ 3

Краткое описание:

mysql_fetch_assoc(). Это дает вам ассоциативный массив данных.

mysql_fetch_array(): возвращает массив комбинаций ассоциативных элементов, а также данные с числовым индексом.

mysql_fetch_object(): возвращает объект со свойствами, соответствующими выбранной строке.

Источник