zoukankan      html  css  js  c++  java
  • PDO 防止 SQL 注入示例

    PDO 防注入的原理:将查询语句和具体的参数值分开发送到数据库服务器,在语句执行前参数值不会被解析。

    示例代码:

    $dbh = new PDO("mysql:host=localhost; dbname=demo", "user", "pass");
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //禁用prepared statements的仿真效果
    $dbh->exec("set names 'utf8'"); 
    $sql="select * from test where name = ? and password = ?";
    $stmt = $dbh->prepare($sql); 
    $exeres = $stmt->execute(array($testname, $pass)); 
    if ($exeres) { 
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        print_r($row);
    }
    }
    $dbh = null;

    注意:占位符代替的值只能是需要用户输入的参数值,而不能是一组值(例如 in( ?))、数据表名或列名(例如 order by ?)或其他 sql 语法。

    Enjoy it !

  • 相关阅读:
    使用 star UML制作的图
    评价片段
    项目部分
    用新学的知识 写了一段小代码
    常用系统存储过程
    考试小总结
    分页
    行转列面试题 事例
    子查询
    生成验证码的方法集合(一)
  • 原文地址:https://www.cnblogs.com/daizhongxing/p/13839245.html
Copyright © 2011-2022 走看看