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

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

請各位大佬指點!php PDO中exec函數怎么防止sql注入,需要提前prepare嗎?怎么回事哈啊?

phpPDO中exec函數怎么防止sql注入,需要提前prepare嗎?我看到$pdo防sql注入是先prepare再excute,比如查詢操作和插入操作,數據都是前臺提交過來的$sql="selectpid,id,time,name,pl,znum,cnumfromtestwhereaid=?andstatus=1orderbyiddesc";$pdo->prepare($sql);$pdo->execute(array($_POST['aid']));.....這種沒問題,但是這種$sql="insertintotest(aid,pid,time,name,pl,ip)values({$res['aid']},{$res['pid']},".time().",'".$res['nc']."','".$res['nr']."','{$ip}')";$pdo->exec($sql);如果如上執行,怎么防止SQL注入,在沒個POST參數上面加quote()嗎?exec可以先prepare嗎?
查看完整描述

2 回答

?
GCT1015

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

首先你的代碼有問題,正確的應該是:
$sql="....";
$sth=$pdo->prepare($sql);
$sth->execute();
根據文檔,PDO::exec的參數有這樣的描述:查詢中的數據應該被妥善地轉義,說明需要用戶自己去進行參數的轉義。PDO防注入是將SQL語句區分成模版和參數兩部分,參數會被預處理/轉義,然后填充到模版生成最終的SQL語句,參數的轉義可以由PDO處理(使用PDOStatement);也可以由用戶程序處理,那就是你先對post的數據做預處理后,再直接執行。
                            
查看完整回答
反對 回復 2019-10-08
  • 2 回答
  • 0 關注
  • 300 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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