Ver*_*igo 40
在性能方面,使用什么并不重要.区别在于mysql_fetch_object返回对象:
while ($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}
Run Code Online (Sandbox Code Playgroud)
mysql_fetch_assoc()返回关联数组:
while ($row = mysql_fetch_assoc($result)) {
echo $row["userid"];
echo $row["fullname"];
}
Run Code Online (Sandbox Code Playgroud)
和mysql_fetch_array()返回数组:
while ($row = mysql_fetch_array($result)) {
echo $row[0];
echo $row[1] ;
}
Run Code Online (Sandbox Code Playgroud)
小智 30
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){...}
Run Code Online (Sandbox Code Playgroud)
虽然许多OOP粉丝(我是OOP粉丝)喜欢将所有内容都变成对象的想法,但我觉得关联数组是数据库中一行比一个对象更好的模型,因为在我看来,一个对象是一个具有处理它们的方法的属性集,而行只是数据,应该如此处理而不会进一步复杂化.
要记住的事情:数组可以很容易地添加到内存缓存(eaccelerator,XCache,..),而对象则不能(它们需要在每次检索时存储和反序列化时进行序列化!).
当您想要添加内存缓存支持时,您可以切换到使用数组而不是对象 - 但到那时您可能必须更改很多代码,这些代码使用以前使用的对象类型返回值.
| 归档时间: |
|
| 查看次数: |
36918 次 |
| 最近记录: |