php mysql 2种不同的方式

时间:2009-12-18 15:57:15

标签: php

我最近遇到了一些人做了第一个的代码。想知道一个人是否更好或为什么一个人会这样写?任何积极的原因都在底层。

$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);

4 个答案:

答案 0 :(得分:1)

看起来顶级代码向后迭代mysql结果,第一个结果是向前遍历它。

第二个代码示例看起来更干净,并且可能有一种方法可以调整查询,以便首先以相反的顺序获得结果,而不是执行顶部循环的有点复杂的方式。

答案 1 :(得分:1)

这两个不相等,因为只有第一个以 reverse 顺序处理结果集 如果只是为了保持代码简单,我会使用ORDER BY x DESC子句。当使用mysql_query()时,完整的结果集在函数返回之前从MySQL服务器传输到php进程,而mysql_data_seek()只是在进程的内存中移动一些指针,所以性能方面它应该没什么关系。但是如果您在某个时候决定使用无缓冲的查询,那么可能会很好地影响性能。

答案 2 :(得分:0)

绝对是第二个:

更少的代码=维护更少的代码=〜可能更少的错误!!

答案 3 :(得分:0)

最重要的是在工作安全性和“代码行”性能指标方面具有明显的优势。除此之外,没有充分的理由去做他们所做的事。