pdo 事務功能和防止sql注入功能

2022-06-01 12:12:10 字數 4383 閱讀 6340

pdo

1.訪問不同的資料庫

2.自帶事務功能

3.防止sql注入

這下面是訪問和自帶的事務功能展示,

>無標題文件

title

>

head

>

<

body

>

php/*//1.造物件

$dsn = "mysql:dbname=mydb;host=localhost";

$pdo = new pdo($dsn,"root","123");

//2.寫sql語句

$sql = "update nation set name='獸族' where code='n013'";

//3.執行sql語句

//$r = $pdo->query($sql);

$r = $pdo->exec($sql);*/

//事務功能

//造物件

$dsn = "mysql:dbname=mydb;host=localhost";

$pdo = new pdo($dsn,"root","123");

//設定異常模式

$pdo->setattribute(pdo::attr_errmode,pdo::errmode_exception);

//寫sql語句

$sql1 = "insert into nation values('n016','人族')";

$sql2 = "insert into nation values('n017','不死族')";

//執行兩條sql語句

trycatch(pdoexception $e)

?>

body

>

html

>

這下面是防止sql注入展示第一種方法 問號佔位

>無標題文件

title

>

head

>

<

body

>

php//造物件

$dsn = "mysql:dbname=mydb;host=localhost";

$pdo = new pdo($dsn,"root","123");

//寫sql語句,預處理語句

$sql = "insert into nation values(?,?)";

//準備sql語句,返回statement物件

$st = $pdo->prepare($sql);

//繫結引數

/*$st->bindparam(1,$code);

$st->bindparam(2,$name);

$code="n022";

$name="矮人族";*/

$attr = array("n023","魔族"); //直接扔就可以了!

//提交執行,不用給sql語句了,已經傳過去了

var_dump($st->execute($attr));

//預處理語句裡面用?佔位的,給陣列的時候要給索引陣列

?>

body

>

html

>

另一種方法名稱佔位

>無標題文件

title

>

head

>

<

body

>

php//造物件

$dsn = "mysql:dbname=mydb;host=localhost";

$pdo = new pdo($dsn,"root","123");

//寫sql語句,預處理語句,使用name佔位

$sql = "insert into nation values(:code,:name)"; //注意用前面加冒號!!

//準備執行

$st = $pdo->prepare($sql);

//繫結引數

/*$st->bindparam(":code",$code,pdo::param_str);

$st->bindparam(":name",$name,pdo::param_str);

$code="n024";

$name="狼族";*/

$attr = array("code"=>"n025","name"=>"蟲族");

//執行

$st->execute($attr);

?>

body

>

html

>

最後是名稱佔位的好處

php//造物件

$dsn = "mysql:dbname=mydb;host=localhost";

$pdo = new pdo($dsn,"root","123");

//寫sql語句,預處理語句,使用name佔位

$sql = "insert into nation values(:code,:name)";

//準備執行

$st = $pdo->prepare($sql);

//執行

$st->execute($_post); 這個post 和提交的一樣直接就賦值了!

最後是查詢!!

>無標題文件

title

>

head

>

<

body

>

php//造物件

$dsn = "mysql:dbname=mydb;host=localhost";

$pdo = new pdo($dsn,"root","123");

//寫sql語句,預處理語句

$sql = "select * from nation";

//準備執行

$st = $pdo->prepare($sql);

//執行

$st->execute();

//讀資料

var_dump($st->fetchall(pdo::fetch_assoc));

?>

body

>

html

>

PDO防止sql注入原理

pdo new pdo mysql host localhost dbname test user pwd sql insert into user name,age values 號的方式 pdo setattribute pdo attr emulate prepares,false pdo有一...

防止SQL注入

1.什麼是sql注入 所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。通過遞交引數構造巧妙的sql語句,從而成功獲取想要的資料。2.sql注入的種類 從具體而言,sql注入可分為五大類,分別是 數字型注入 字元型注入...

防止SQL注入

最近看到很多人的 都被注入js,被iframe之類的。非常多。本人曾接手過乙個比較大的 被人家入侵了,要我收拾殘局。1.首先我會檢查一下伺服器配置,重新配置一次伺服器安全,可以參考 2.其次,用麥咖啡自定義策略,即使 程式有漏洞,別人也很難在檔案上寫入 了。參考自定義策略,有了這個策略,再爛的程式,...