zoukankan      html  css  js  c++  java
  • 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     */
  • 相关阅读:
    Celery最佳实践(转)
    我希望知道的关于Django的11件事(转)
    Celery和Rabbitmq自学
    我眼中的各种编程语言(转)
    linux 的nohup & 和daemon 总结(转)
    模糊测试之AVI文件分析
    微信Netting-QRLJacking分析利用-扫我二维码获取你的账号权限
    一个Unix内核级别漏洞(一)
    一次对SNMP服务的渗透测试
    定位日站大法之-社会工程学
  • 原文地址:https://www.cnblogs.com/sharecorner/p/6155087.html
Copyright © 2011-2022 走看看