mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_object

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

mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object() 

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

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

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

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 скорее всего, зависит от того, как вы разрабатываете свое приложение: при использовании объектов повсюду, вероятно, наиболее подходящим является второй.

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

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 ().