亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

哪些方法用于實現pdo的預處理語句?

哪些方法用于實現pdo的預處理語句?

心有法竹 2019-03-07 11:07:11
哪些方法用于實現pdo的預處理語句
查看完整描述

3 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

$pdo = new PDO(//配置);
$sql = 'SELECT field FROM table WHERE field=:condition';
$r = $pdo->prepare($sql);
$r->execute(array(':condition'=>$param));

//這里把參數直接以數組的形式傳進去,其余工作prepare會自動幫你完成
//prepare的工作就是預先處理sql語句預防可能出現的注入,不然怎么會叫預處理呢

追問
大神:
按照您上面的方法,
那我是不是要改為像下面的呢:
$db->prepare("select * from `user` where id =:condition ORDER BY id ASC");

$db->execute(array(':condition'=>4,‘:condition'=>5,:condition'=>6));

您幫評價一下我上面修改還有什么地方不夠完善嗎?
追答
這樣查不出來數據的,要實現你的功能的這樣寫

1
2
3
4
5
6
7
8
9
10
11
12

$db->prepare("select * from `user` where id=:p1 or id=:p2 or id=:p3');
$r->execute(array(
':p1'=>'4'
':p2'=>'5'
':p3'=>'6'
));
//或
$db->prepare("select * from `user` where id in (:p1)');
$r->execute(array(
':p1'=>'4,5,6'
));
//他只會執行一次,而不會因為有多個變量就執行多次

本質上預處理是對sql語句模板的處理,再本質點就是處理字符串,只不過prepare函數會把可能出現的問題幫你解決了(比如變量不加單引號啊,有特殊字符啊等等)



查看完整回答
反對 回復 2019-03-30
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

過濾一些常見的數據庫操作關鍵字,
select ,insert,update,delete,and,*等或通過系統函數addslashes對內容進行過濾
php配置文件中register_globals=off;設置為關閉狀態.(作用將注冊全局變量關閉);如接收POST表單的值使用$_POST['user'],假設設置為ON的話$user才接收值
sql語句書寫的時候盡量不要省略小引號(tab上面那個)和單引號
提高數據庫命名技巧,對于一些重要的字段根據程序的特點命名,使之不易被猜中
對于常的方法加以封裝,避免直接暴漏SQL語句
開啟PHP安全模式safe_mode=on
打開magic_quotes_gpc來防止SQL注入,默認為關閉,開啟后自動把用戶提交sql查詢語句進行轉換把"'"轉換成"\'"
控制錯誤信息輸出,關閉錯誤信息提示,將錯誤信息寫到系統日志
使用MYSQLI或PDO預處理

查看完整回答
反對 回復 2019-03-30
  • 3 回答
  • 0 關注
  • 1053 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號