mysql_fetch_array
делает ваш код трудным для чтения = основной кошмарный сон. Вы не можете сразу увидеть, с какими данными работает ваш объект. Это немного быстрее, но если это важно для вас, вы обрабатываете так много данных, что PHP, вероятно, не правильный путь.
mysql_fetch_object
имеет некоторые недостатки, особенно если вы основываете слой db на нем.
Имена столбцов могут быть недопустимыми идентификаторами PHP, например, tax-allowance
или user.id
, если драйвер базы данных выдает имя столбца, указанное в запросе. Затем вы должны начать использовать {}
повсюду.
Если вы хотите получить столбец на основе его имени, вставив его в некоторую переменную, вы также должны начать использовать свойства переменной $row->{$column_name}
, а синтаксис массива $row[$column_name]
Конструкторы не вызываются, когда вы можете ожидать, если вы укажете имя класса.
Если вы не укажете имя класса, вы получите stdClass
, что вряд ли лучше, чем массив в любом случае.
mysql_fetch_assoc
- самый простой из трех для работы, и мне нравится различие, которое это дает в коде между объектами и строками результатов базы данных ...
$object->property=$row['column1'];
$object->property=$row[$column_name];
foreach($row as $column_name=>$column_value){...}
Хотя многим поклонникам ООП (а я поклоннику ООП) нравится идея превращения всего в объект, я чувствую, что ассоциативный массив - лучшая модель строки из базы данных, чем объект Так как, на мой взгляд, объект - это набор свойств с методами, которые воздействуют на них, тогда как строка является просто данными и должна рассматриваться как таковая без дальнейших осложнений.