phpmysqlimysqli_query()mysqli_real_query()

myDCool發表於2016-11-26

2016年11月26日 15:22:27 星期六

場景:

PHP從mysql中讀取資料

1. 一次性讀取所有資料返給PHP

2. 每次迴圈只讀取一掉記錄

資料量小的時候可以使用第一種方法, 資料量很大的時候就需要使用第二種方法了

 

第二種方法的使用:

如果用 php::mysql 擴充套件,  有一個函式叫做 mysql_unbuffered_query

如果用 php::mysqli 擴充套件, 有下面兩種等價的使用方式:

  1) mysqli::query(`select * from ….`, MYSQLI_USE_RESULT)

  2) mysqli::real_query(`select * from …`); 配合函式 mysqli::use_result() 一起使用

解釋:

mysqli::query(`…`, MYSQLI_STORE_RESULT) 等價於 mysqli::real_query() + mysqli::store_result() //MYSQLI_STORE_RESULT 是預設的可以不傳, 一次性獲取所有資料集返回給PHP

mysqli::query(`…`, MYSQLI_USE_RESULT) 等價於 mysqli::real_query() + mysqli::use_result() //每次返回一條記錄給PHP

其中

mysqli::query() 返回的資料的型別是查詢的結果集,

mysqli::real_query() 返回的是布林值true/false 告知程式本次mysql查詢是不是成功(可以簡單這樣理解), 成功的話, 再呼叫獲取結果集的函式

 

注意:

也正是因為結果集是逐條返回的, 所以只能順序讀取結果, 不能隨機指定偏移量去獲取某一條記錄, 也不能獲取記錄的總條數等等