標籤:value 資料 固定 區別 span str dos 編譯技術 sql注入
(1)
比如以下的語句:
1 insert into biao1 values(‘李寧’,‘100’);2 insert into biao1 values(‘安踏’,‘100’);3 insert into biao1 values(‘匹克’,‘100’);4 insert into biao1 values(‘喬丹’,‘100’);5 insert into biao1 values(‘耐克’,‘100’);6 insert into biao1 values(‘阿迪’,‘100’);7 insert into biao1 values(‘361’,‘100’);
那麼,這個PDO就可以只是編譯一次這些語句相同的地方,然後,根據區別來執行不同的語句。
1 或者比如2 insert into team values(NULL,‘國安’);3 insert into team values(NULL,‘恒大’);4 insert into team values(NULL,‘建國’);5 insert into team values(NULL,‘綠地’);
文法的實現:
1 (1)編譯統一的結構,2 (2)綁定資料到中間編譯結果上,3 (3)執行綁定了資料的語句
1 (1)編譯統一的結構,2 $PDOStatement = $pdo->prepare(SQL的結構);3 SQL結構中的資料部分,可以使用問好,或者冒號標籤的文法來佔用:
1 (2)綁定資料到中間編譯結果上,2 $PDOStatement->bindValue()
1 (3)執行綁定了資料的語句 2 $PDOStatement->execute();
先行編譯的優點:
更好的防止SQL注入,是因為先行編譯時,不需要使用者的資料參與。編譯時間,結構固定,導致使用者資料不能影響到SQL的結構
普通的執行方法:
$pdo->query();
$pdo->exec()
如果需要防止SQL注入,需要人為的轉義使用者資料,使用的方式是$pdo->quote()方法。轉義並使用引號包裹。
87)PHP,PDO的先行編譯技術