基本的策略
將sql語句強制的一分為二:
第一部分為前面相同的命令和結構部分
第二部分為後面的可變資料的部分
在執行sql語句的時候,首先將前面相同的命令和結構部分傳送給mysql伺服器,讓mysql伺服器事先進行一次預處理(此時並沒有真正的執行sql語句),而為了保證sql語句的結構完整性,在第一次傳送sql語句的時候將其中可變的資料部分都用乙個資料佔位符來表示!比如問號?就是常見的資料佔位符!
在mysql預處理中有兩種形式:帶引數/不帶引數預處理
簡單的語句執行操作
set @i=3; 相當於設定乙個乙個變數 必須以@開頭 並賦值
execute test using @i; 好比 select * from t1 where id>3;
drop prepare test; #刪除預處理
不用每次都去請求mysql
不帶引數的預處理語句
1.1 準備預處理語句
prepare 語句名稱 from 「預處理的sql語句」;
prepare sql_1 from "select * from pdo";
1.2 執行預處理語句
execute sql_1;
1.3 刪除預處理
drop prepare 語句名稱;
drop prepare sql_1;
帶引數的預處理語句
2.1準備預處理語句
prepare 語句名稱 from 「預處理的sql語句」;
prepare sql_2 from "select * from pdo where id = ?";
2.2 定義引數變數
set @**變數名 = *值; *--這裡的@是在mysql中定義變數的一種語法形式(模擬php中的$符號)
set @id=2;
2.3 傳遞引數變數並執行預處理語句
execute **語句名稱 using **引數變數;
execute sql_2 using @id; --選出id=2的資訊
2.4 刪除預處理
drop prepare 語句名稱;
drop prepare sql_2;
注意:如果資料佔位符不止乙個,就按資料佔位符的順序傳參就行了:
prepare sql_2 from "select * from pdo where id > ? && age > ?";
set @id=2;
set @age=30;
execute sql_2 using @id,@age;
注意此處的引數未知應與步驟一中的佔位符對應
mysql 預處理 MySQL的預處理技術
所謂的預處理技術,最初也是由mysql提出的一種減輕伺服器壓力的一種技術!傳統mysql處理流程 1,在客戶端準備sql語句 2,傳送sql語句到mysql伺服器 3,在mysql伺服器執行該sql語句 4,伺服器將執行結果返回給客戶端 這樣每條sql語句請求一次,mysql伺服器就要接收並處理一次...
預處理器小結
預處理器發生在程式被編譯之前,所有的預處理器指令都以 開頭。1.include預處理器指令 使指定檔案的乙個副本被包含到指令所在的位置。include 與 include filename 區別 簡單不加以說明 include 指令用於包含標準類庫標頭檔案,也可以用於由多個原始檔組成的程式。2.in...
預處理器簡介
預處理是c編譯器做的第一件事情,主要是做一些文字方面的工作。包括 刪除注釋 插入被 include包含的檔案 定義和替換由 define指令定義的符號以及 的部份內容,和條件編譯。預定義符號 預定義符號如下表所示 file 進行編譯的檔名 line 檔案的當前行號 date 檔案編譯的日期 time...