2011-04-13 80 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時間/內存,並在您的應用程序中發現真正的瓶頸。

相關問題