Mysql导致PHP - 数组还是对象?
使用PHP / MySQL已经有一段时间了,我想知道使用vs / 是否有任何特定的优势(性能或其他方面)。mysql_fetch_object()
mysql_fetch_assoc()
mysql_fetch_array()
使用PHP / MySQL已经有一段时间了,我想知道使用vs / 是否有任何特定的优势(性能或其他方面)。mysql_fetch_object()
mysql_fetch_assoc()
mysql_fetch_array()
性能方面,使用什么并不重要。不同之处在于mysql_fetch_object返回对象:
while ($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}
mysql_fetch_assoc() 返回关联数组:
while ($row = mysql_fetch_assoc($result)) {
echo $row["userid"];
echo $row["fullname"];
}
和 mysql_fetch_array() 返回数组:
while ($row = mysql_fetch_array($result)) {
echo $row[0];
echo $row[1] ;
}
mysql_fetch_array
使您的代码难以阅读=维护的噩梦。您无法一目了然地看到您的对象正在处理哪些数据。它稍微快一点,但如果这对你很重要,你正在处理如此多的数据,PHP可能不是正确的方法。
mysql_fetch_object
有一些缺点,特别是如果你基于数据库层。
列名可能不是有效的 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){...}
虽然许多OOP粉丝(我是OOP粉丝)喜欢将所有内容转换为对象的想法,但我觉得关联数组是数据库中行的更好模型,而不是对象,因为在我看来,对象是一组具有操作方法的属性,而行只是数据,应该这样处理而不会进一步复杂化。