對資料庫執行一條sql語句:
(1) mixed:mysqli_query(mysqli $link, string $query,int $resultmode=mysqli_store_result);
1)對於insert,update,delete等不會返回資料的sql語句,在執行沒有錯誤時返回true
2)對於返回資料的sql語句執行成功的時間會返回結果集物件,可以使用操作結果集物件的函式獲取資料
3)第三個引數決定了mysqli client和sever之間取結果集的方式 :
1. mysqli_store_result
第三個預設是mysqli_store_result模式或省略不填,表示具體的結果集一次性返回給客戶端
用函式取值的時候相當於在本地取資料
2. mysqli_use_result
客戶端使用一條條取資料的函式,一次次來mysql這邊取,這種模式不怎麼用,在返回資料量特別大的時候用
用函式取值的時候相當於在伺服器端取資料
注意:如果使用mysqli_use_result模式則必須在獲取完所有的結果才可以使用該函式
$result=mysqli_query($link, $query,mysqli_use_result);
var_dump(mysqli_fetch_row($result));
var_dump(mysqli_fetch_row($result));
var_dump(mysqli_fetch_row($result));
/* mysqli_num_rows()函式在mysqli_use_result模式下獲取不到記錄有多少行
* 因為mysqli_use_result模式表示資料都在mysql伺服器端不在php端,
*/var_dump(mysqli_num_rows($result));
(2)bool:mysqli_real_query(mysqli $link, string $query);
也可以使用本函式對資料執行一條sql語句,返回結果為布林值,不返回結果集
適用於只需返回布林值,判斷有沒有執行成功的需求
如果想獲取結果集可以使用mysqli_store_result( )獲取結果集物件
$query='select * from t1';
if (mysqli_real_query($link,$query))
(3)如果在執行sql語句的時候發生錯誤,以上兩個函式都將返回false,並且可以使用以下函式處理錯誤原因
int:mysqli_errno(mysqli $link);
string:mysqli_error(mysqli $link);
$query="insert into t2(info) values('robin')"; //t2不存在
if (mysqli_query($link,$query))
else
//string 'table 'd14.t2' doesn't exist' (length=28)
一條SQL語句如何被執行
select from t where id 10 寫乙個查詢語句不難,但你知道一條sql語句被執行的過程嗎?下圖是mysql的基本架構圖。server層類似中介軟體,主要接受使用者請求,解析請求等。儲存引擎則是底層核心,負責資料的訪問。客戶端要想使用mysql,必須先和mysql建立乙個連線,聯結...
一條SQL語句的執行過程
1.1連線層 提供連線協議 tcp ip,socket 提供驗證 使用者 密碼 ip socket 提供專用連線線程 接收使用者sql,返回結果 通過以下語句可以檢視鏈結執行緒的基本情況 mysql show processlist 1.2sql層 重點 接收上層傳送的sql語句 語法驗證模組 驗證...
一條sql語句為何執行這麼慢
mysql是大多數場景下都可以使用的資料庫,大廠阿里很多都有用到,大家有沒有遇到一條sql語句執行速度很慢的情況呢,下面就我自己掌握的技能未大家分析分析,不足請補充指教。啟動mysql select from users where id 2 星號為了書寫方便 剛好你的 id 欄位上沒有索引,只能走...