Mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_object
Все функции очень похожи:
mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object()
Недавно я начал использовать mysql_fetch_object, поскольку я делаю много OOP с PHP.
Но каковы мнения людей, по которым лучше всего использовать и почему, и, возможно, в каком сценарии лучше всего их использовать.
Спасибо за ваши мысли!
Ответы
Ответ 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(): возвращает объект со свойствами, соответствующими выбранной строке.
Источник