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

哪些方法用于实现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 关注
  • 1020 浏览
慕课专栏
更多

添加回答

举报

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