我最近遇到了一些人做了第一个的代码。想知道一个人是否更好或为什么一个人会这样写?任何积极的原因都在底层。
$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);
答案 0 :(得分:1)
看起来顶级代码向后迭代mysql结果,第一个结果是向前遍历它。
第二个代码示例看起来更干净,并且可能有一种方法可以调整查询,以便首先以相反的顺序获得结果,而不是执行顶部循环的有点复杂的方式。
答案 1 :(得分:1)
这两个不相等,因为只有第一个以 reverse 顺序处理结果集
如果只是为了保持代码简单,我会使用ORDER BY x DESC
子句。当使用mysql_query()时,完整的结果集在函数返回之前从MySQL服务器传输到php进程,而mysql_data_seek()只是在进程的内存中移动一些指针,所以性能方面它应该没什么关系。但是如果您在某个时候决定使用无缓冲的查询,那么可能会很好地影响性能。
答案 2 :(得分:0)
绝对是第二个:
更少的代码=维护更少的代码=〜可能更少的错误!!
答案 3 :(得分:0)
最重要的是在工作安全性和“代码行”性能指标方面具有明显的优势。除此之外,没有充分的理由去做他们所做的事。