PHP之PDO

  1 /*php之sql注入
  2 
  3 浏览器通过特殊的数据,影响了sql的执行,称之为sql注入。
  4     '# 注释后边的内容
  5     '--同上
  6     ' or 1 or ' 直接登录
  7 
  8     字符转义
  9     转义函数:mysql扩展提供的函数:mysql_real_escape_string(转义的数据)
 10     用于将参与到sql执行的数据,进行实施安全转义。
 11 
 12     在数据库操作层加入 用户传入的sql语句并加以过滤,在进行数据库操作,以此防止用户的不确定性数据影响了sql的查询。
 13 */
 14 
 15 /*
 16 PDO
 17 类似于,mysql的扩展。也是操作mysql服务器的方式。
 18 随着php的发展,php认为pdo才是操作数据的合理方式。
 19 
 20 PDO:PHP DATA OBJECT
 21 基于面向对象语法完成操作。
 22 
 23 在使用pdo之前要在php.ini文件中开启 extension=php_pdo_mysql.dll
 24 扩展开启。 重启服务器,就可以在phpinfo.php中查询是否开启啦。
 25 
 26 
 27 创建一个数据库连接的PDO实例
 28     PDO:__construct 创建一个表示数据库连接实例
 29     PDO::__construct(string $dsn [,string $username [,string passowrd [,array options]]])    
 30 
 31     dsn:数据源名称 data source name,包含了请求连接到数据库的信息。。
 32     username 毋庸置疑 就是用户名啦,
 33     password 密码。
 34     driver_options 
 35         一个具体驱动的连接选项的键=>值 数组。
 36     返回值:成功则返回一个PDO对象。
 37     错误/异常
 38     如果试图连接请求的数据库失败,则pdo::__construct抛出一个pdo异常(PDOException)    
 39 */
 40     <?php
 41         $dsn = 'mysql:host=127.0.0.1; port=3306; dbname=mytest';
 42         $username='root';
 43         $password='root';
 44         $options=array(
 45             //属性初始化命令
 46             PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8' //初始化数据库编码
 47         );
 48 
 49         //connect
 50         $pdo = new PDO($dsn, $username, $password, $options);
 51 
 52         $sql = "SELECT * FROM `article`";
 53         $result = $pdo->query($sql);  //$result 是一个结果集对象 object(PDOStatement)
 54 
 55         $sql = "DELETE FROM `article` WHERE `id` =1";
 56         //返回受影响的记录
 57         $result = $pdo->exec($sql);
 58 
 59         $result->fecthAll(PDO::FETCH_ASSOC); //多条数据的查询
 60         $result->fetch(); //单条记录的查询
 61         fetchColumn();  //获取单个值查询
 62 
 63         //当实例化完PDO对象,pdo就自动完成数据库连接。
 64 /*
 65 执行sql(结构化查询语言)        
 66         
 67         PDO对象的方法:
 68             结果集对象: query() ; 查询类:select,show, desc
 69             受影响的记录数:exec() ; 非查询类:insert,update, delete,表操作,库操作
 70 
 71             只要是执行失败(sql出错),都返回false    
 72 
 73 操作结果集对象
 74     为了获取最终的数据。使用结果集对象的方法来完成。
 75     获取全部数据:
 76         二维数组:fetchAll()
 77         一维数组:fetch
 78         字符串数据:fetchColumn()
 79 
 80     可以在fetchall和fetch中使用参数:
 81         PDO::FETCH_ASSOC ,PDO::FETCH_NUM , PDO::FETCH_BOTH的方式,
 82         获取,关联数组,索引数组,两者都。    
 83 
 84 PDO对象的常用方法
 85     $pdo->query();
 86     $pdo->exec();
 87     $pdo->errorCode();// 错误状态码
 88     $pdo->errorInfo();//错误信息 数组        
 89     执行失败返回false
 90 
 91     具体的错误状态码查询手册
 92     $pdo->lastInsertID()  //获取最新生成的auto_increnement()的字段值,最新更新的id
 93     $pdo->quote(); //转义数据,并使用引号包裹。
 94     因此,在使用pdo执行sql时,应该使用上面的方法进行sql语句过滤,防止sql注入,
 95     sql-injection
 96 PDO事务处理
 97     $pdo->beginTransaction(); //开启事务
 98     $pdo->rollback();   //事务回滚
 99     $pdo->commit();     //事务提交
100     $pdo->inTranaction();    //判断是否处于事务中。
101 
102     */
原文地址:https://www.cnblogs.com/sharecorner/p/6155087.html