为了账号安全,请及时绑定邮箱和手机立即绑定

php PDO中exec函数怎么防止sql注入,需要提前prepare吗?求指导!

php PDO中exec函数怎么防止sql注入,需要提前prepare吗?求指导!

拉丁的传说 2019-10-25 23:44:37
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 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

首先你的代码有问题,正确的应该是:
$sql="....";
$sth=$pdo->prepare($sql);
$sth->execute();
根据文档,PDO::exec的参数有这样的描述:查询中的数据应该被妥善地转义,说明需要用户自己去进行参数的转义。PDO防注入是将SQL语句区分成模版和参数两部分,参数会被预处理/转义,然后填充到模版生成最终的SQL语句,参数的转义可以由PDO处理(使用PDOStatement);也可以由用户程序处理,那就是你先对post的数据做预处理后,再直接执行。
                            
查看完整回答
反对 回复 2019-10-25
  • 2 回答
  • 0 关注
  • 393 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信