我最近遇到了一些代码,这些代码是第一个人做的。想知道最上面的是不是更好,或者为什么一个人会这样写?任何积极的理由超过底层的方式。
$result = mysql_query($query)or die("Obtaining location data failed!");
for ($i = mysql_num_rows($result) - 1; $i >=0; $i--)
{
if (!mysql_data_seek($result, $i))
{
echo "Cannot seek to row $i\n";
continue;
}
if(!($row = mysql_fetch_object($result)))
continue;
echo $row->locationname;
}
mysql_free_result($result);vs
$result = mysql_query($query) or die("Obtaining location data failed!");
while($row = mysql_fetch_object($result)){
echo $row->locationname;
unset($row);
}
mysql_free_result($result);发布于 2009-12-19 00:03:28
看起来最上面的代码是向后迭代mysql结果,第一个代码是向前迭代。
第二个代码示例看起来更干净,而且可能有一种方法可以调整查询,使其首先以相反的顺序获得结果,而不是像执行顶部循环那样有点复杂。
发布于 2009-12-19 00:04:47
这两个不是等价的,因为只有第一个以相反的顺序处理结果集。
如果只是为了保持代码简单,我会用ORDER BY x DESC子句这样做。当使用mysql_query()时,完整的结果集在函数返回之前从MySQL服务器传输到php进程,而mysql_data_seek()只是在进程内存中移动一些指针,所以就性能而言,这并不重要。但是,如果您在某些时候决定使用无缓冲查询,这可能会很好地影响性能。
发布于 2009-12-19 00:08:03
肯定是第二个:
更少的代码=更少的代码维护=~也许更少的bug!
https://stackoverflow.com/questions/1929028
复制相似问题