Это зависит от того, как вы хотите получить доступ к данным строки.
- Если вы хотите использовать числовые индексы, используйте fetch_row
- Если вы хотите использовать имя поля в качестве индекса, используйте fetch_assoc
Если вам не нужно использовать индексы (скажем, вы пропускаете строку через foreach) или вам все равно, использование fetch_row должно привести к немного меньшим издержкам (хотя это очень минимально). Если у вас нет предпочтений, предпочтите использовать имена полей, так как это облегчает чтение кода.
Никогда не используйте fetch_array, который по сути объединяет fetch_row и fetch_assoc. Использование как числового, так и ассоциативного почти наверняка сделает код менее понятным. (Вы можете использовать fetch_array, если указали параметр $ result_type как-то отличный от MYSQL_BOTH, но вы также можете использовать соответствующую функцию, поскольку ваш код будет таким же понятным, но более кратким).
Обратите внимание, что если вы хотите использовать имя поля, убедитесь, что в вашем запросе нет двух полей с одинаковым именем. Если вы это сделаете, вам нужно будет указать псевдоним для этого столбца в запросе (и использовать его в качестве имени поля при доступе к массиву)