2012-11-27 15 views
0

什么是最好的使用(以节省机器资源)mysql_fetch_array:最好mysql_fetch_array使用

$listidsquery = mysql_query("SELECT * FROM database") or die(mysql_error()); 
while($listidsres=mysql_fetch_array($listidsquery)){ 
     results; 
     } 

while($listidsres=mysql_fetch_array(mysql_query("SELECT * FROM database"))){ 
     results; 
     } 

感谢。

+0

_Never_ nest'mysql_query()'在获取调用中。如果查询失败,你会从'mysql_fetch_array()'得到一个致命的错误。你的第一个例子是正确的方法,但你也应该检查'if($ results)'以确保查询成功。 –

+0

任何你不使用mysqli的原因?您正在使用的功能已被弃用。 – JohnB

+3

请不要将mysql_ *函数用于新代码。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。看到[红色框](http://goo.gl/GPmFd)?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你在意学习,这里是[很好的PDO教程](http://goo.gl/vFWnC)。 –

回答

0

第一个片段是正确的,并且会产生出色的性能。第一个将mysql结果集资源设置为$listidres - 资源是一个简单的整数值。因此它不会消耗任何重要的额外资源。

第二个片段根本不正确。它将为循环的每次迭代重新执行查询(因此可能导致无限循环)。

正如以上评论中所述,这两个片段都使用了mysql库,即EOL。您应该改为mysqli