哪些方法用于实现pdo的预处理语句?

哪些方法用于实现pdo的预处理语句


心有法竹
浏览 1023回答 3
3回答

慕慕森

$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));您帮评价一下我上面修改还有什么地方不够完善吗?追答这样查不出来数据的,要实现你的功能的这样写123456789101112$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函数会把可能出现的问题帮你解决了(比如变量不加单引号啊,有特殊字符啊等等)

SMILET

过滤一些常见的数据库操作关键字,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预处理
打开App,查看更多内容
随时随地看视频慕课网APP