zoukankan      html  css  js  c++  java
  • PDO预处理

    1.参数以?替代

     1 <?php
     2   header('content-type:text/html;charset=utf-8');
     3   $dsn='mysql:host=localhost;dbname=test';
     4   $pdo=new PDO($dsn,'root','');
     5   $pdo->exec('set names utf8');
     6 
     7   $sql='SELECT * FROM users id>?'; //参数以 ? 替代
     8   $stmt=$pdo->prepare($sql); //创建预编译对象
     9   $id=2;
    10   $stmt->bindParam(1,$id); //参数编号,具体值
    11   //$stmt->bindValue(1,2); //不需要提前赋值 直接传参数
    12   $stmt->execute(); //执行代码
    13   $data=$stmt->fetchAll(PDO::FETCH_ASSOC); //获取结果集 类型为关联数组
    14   var_dump($data);
    15   $pdo=null;
    16  ?>

    2.参数以:name替代。推荐,更加便利。

     1 <?php
     2   header('content-type:text/html;charset=utf-8');
     3   $dsn='mysql:host=localhost;dbname=test';
     4   $pdo=new PDO($dsn,'root','');
     5   $pdo->exec('set names utf8');
     6 
     7   $sql='SELECT * FROM users id>:id'; //参数以 :name 替代
     8   $stmt=$pdo->prepare($sql); //创建预编译对象
     9   $id=2;
    10   $stmt->bindParam(":id",$id); //参数编号,具体值
    11   $stmt->execute(); //执行代码
    12   $data=$stmt->fetchAll(PDO::FETCH_ASSOC); //获取结果集 类型为关联数组
    13   var_dump($data);
    14   $pdo=null;
    15 ?>

    对于MySqli预处理,PDO执行查询语句时,不需要绑定结果集,直接使用fetch()或者fetchAll()

    PDO::FETCH_ASSOC          从结果集中获取以列名为索引的关联数组。
    PDO::FETCH_NUM             从结果集中获取一个以列在行中的数值偏移量为索引的值数组。
    PDO::FETCH_BOTH            这是默认值,包含上面两种数组。

    PDO的预处理方式可以防范常见的SQL注入

  • 相关阅读:
    WebApi 接口参数不再困惑:传参详解
    dataType和contentType的区别
    WaitHandles 的数目必须少于或等于 64 个--任意线程信号量监视
    跨线程调用DataGridView控件
    (转)调整.NET控件WebBrowser的默认浏览器内核版本
    Winform中checklistbox控件的常用方法
    csuoj 残缺的棋盘
    csuoj 你经历过绝望吗?两次! bfs + 优先队列
    csuoj barricade
    csuoj 集训队分组
  • 原文地址:https://www.cnblogs.com/t-young1201/p/10153577.html
Copyright © 2011-2022 走看看