標籤:
對於mysql_query大家都很熟悉,下面先簡單介紹下mysql_unbuffered_query
mysql_unbuffered_query
(PHP 4 >= 4.0.6, PHP 5)mysql_unbuffered_query -- 向 MySQL 發送一條 SQL 查詢,並不擷取和緩衝結果的行
說明resource mysql_unbuffered_query ( string query [, resource link_identifier] )
mysql_unbuffered_query() 向 MySQL 發送一條 SQL 查詢 query,但不像 mysql_query() 那樣自動擷取並緩衝結果集。一方面,這在處理很大的結果集時會節省可觀的記憶體。另一方面,可以在擷取第一行後立即對結果集進行操作,而不用等到整個 SQL 陳述式都執行完畢。當使用多個資料庫連接時,必須指定選擇性參數 link_identifier。
注意: mysql_unbuffered_query() 的好處是有代價的:在 mysql_unbuffered_query() 返回的結果集之上不能使用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 發送一條新的 SQL 查詢之前,必須提取掉所有未緩衝的 SQL 查詢所產生的結果行。
以上是mysql_unbuffered_query 在php手冊中的解釋,上網查了很多對手冊中已有的解釋的解釋,很多人希望有個執行個體來更好地理解這個函數的應用,我按照給的解釋,做了個執行個體,僅供參考:
$link = mysql_connect(‘localhost‘,‘root‘,‘pwd‘);mysql_select_db(‘dbname‘);$sql = "SELECT * FROM tablename";/*注意以下兩個$result,如果用mysql_query(),那麼mysql_data_seek()函數將起作用,因為查詢結果緩衝了,如果用mysql_unbuffered_query()函數,那麼mysql_data_seek()不起作用,正如它在手冊中的解釋,不緩衝。*/$result = mysql_unbuffered_query($sql,$link);//$result = mysql_query($sql,$link);while ($row = mysql_fetch_array($result, MYSQL_NUM)) { printf ("ID: %s Name: %s", $row[0], $row[1]);}mysql_data_seek($result,0);while ($row = mysql_fetch_array($result, MYSQL_NUM)) { printf ("ID: %s Name: %s", $row[0], $row[1]);}mysql_free_result($result);"
參考文章: http://www.lai18.com/content/317207.html
PHP中的mysql_unbuffered_query與mysql_query的區別