2011-04-13 104 views
1

我有一个mysql语句,它只抓取一个基于id的记录。我想知道,如果使用mysql_fetch_row或其他方法,那么使用诸如mysql_fetch_array之类的东西,只需抓取数据库中的一行即可。使用PHP在MySQL中选择一行的最佳方式是什么?

与mysql_fetch_row一起使用似乎是常识,但我只是想确认一下。

+0

在两者之间进行选择的原因是什么? 73微秒的加速?如果您只是在提取关联和数字索引数组之间进行选择,只需使用更容易处理的数组。 – Wiseguy 2011-04-13 22:51:05

回答

5

要注意的重要一点是,使用mysql_fetch_array() 显著比使用 mysql_fetch_row(),虽然它提供了一个 显著增值较慢。

Source

0

为什么你不使用LIMIT 1里面的mysql语句,不管你会有一行。

+0

假设他知道'id',那么他的查询看起来就像'WHERE id ='foo'' – 2011-04-13 22:49:09

+0

@Bacon这与'limit 1'有什么关系? – Neal 2011-04-13 22:52:01

+0

我认为Bacon Bits认为'id'是唯一的,它听起来就像它。 – Wiseguy 2011-04-13 22:54:47

0

两个功能几乎相同,名字只是让你觉得这是不同的:

$r=mysql_query('SELECT name,email FROM tbl LIMIT 1'); 
var_dump(mysql_fetch_assoc($r)); 
    // array('name'=>[dbName], 'email'=>[dbEmail]); 
var_dump(mysql_fetch_row($r)); 
    // array([dbName], [dbEmail]); 
    // It's a normal incremental integer index array 
var_dump(mysql_fetch_array($r,MYSQL_ASSOC)); 
    // same as mysql_fetch_assoc(); 
var_dump(mysql_fetch_array($r,MYSQL_NUM)); 
    // same as mysql_fetch_row(); 
var_dump(mysql_fetch_array($r,MYSQL_BOTH)); 
    // array(0=>[dbName], 1=>[dbEmail], 'name'=>[dbName], 'email'=>[dbEmail]); 

该手册还建议性能明智的两种功能表现不俗。本地测试提示相同的方向。我建议您不要担心保存的.0001时间/内存,并在您的应用程序中发现真正的瓶颈。

相关问题