• PHP PDO使用


    PHP操作MySQL数据库方式有三种:
    *1. mysql 最原始的、纯过程化的 如连接: mysql_connect(主机名,账号,密码);

    2. mysqli 改进版的、兼容过程化和面向对象化操作
    如:连接: mysqli_connect(主机名,账号,密码,库名) //过程化
    new mysqli(主机名,账号,密码,库名) //面向对象

    *3. PDO 通用的,兼容其他数据库 , 纯面向对象方式
    如: 连接: new PDO(DSN,账号,密码);

    选择PDO的原因:跨数据库,带预处理(防sql注入)、支持事务操作
    ===================================================
    PDO--PHP Data Objects
    ===================================================

    PDO的环境配置:开启支持PDO
    在php.ini配置文件中开启:
    extension=php_pdo.dll
    extension=php_pdo_mysql.dll

    在PDO操作中涉及到类:PDO、PDOStatement(预处理对象)、PDOException(异常类)

    一、 PDO类的构造方法:
    ---------------------------------------------------------
    PDO __construct( string dsn
    [, string username
    [, string password
    [, array driver_options]]] );
    其中:dsn数据库连接信息如“mysql:host=localhost;dbname=库名”
    username:用户名
    password:密码
    driver_options:配置选项:
    如: PDO::ATTR_PERSISTENT=>true,是否开启持久链接
    PDO::ATTR_ERRMODE=>错误处理模式:(可以是以下三个)(3)
    PDO::ERRMODE_SILENT:不报错误(忽略)(0)
    PDO::ERRMODE_WARNING:以警告的方式报错(1)
    PDO::ERRMODE_EXCEPTION:以异常的方式报错。(2)

    $pdo = new PDO("mysql:host=localhost;dbname=lamp36db","root","root");
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    其他方法:
    --------------------------------------------------------
    1. query($sql); 用于执行查询SQL语句。返回PDOStatement对象
    2. exec($sql); 用于执行增、删、改操作,返回影响的行数
    3. getAttribute(); 获取一个"数据库连接对象"属性。
    4. setAttribute(); 设置一个"数据库连接对象"属性。
    5. beginTransaction 开启一个事务(做一个回滚点)
    6. commit 提交事务
    7. rollBack 事务回滚操作。
    8. errorCode 获取错误码
    9. errorInfo 获取错误信息
    10.lastInsertId 获取刚刚添加的主键值。
    11.prepare 创建SQL的预处理,返回PDOStatement对象
    12.quote 为sql字串添加单引号。


    预处理对象PDOStatement对象:
    =============================================
    我们可以通过PDO的方法来获取PDOStatement:
    1.PDO的query(查询sql)方法获取,用于解析结果集
    2.PDO的prepare(SQL)方法获取,用于处理参数式sql并执行操作。

    PDOstatement对象的方法:
    ----------------------------------------------------------------
    1、fetch() 返回结果集的下一行,结果指针下移,到头返回false 。
    参数: PDO::FETCH_BOTH (default)、:索引加关联数组模式
    PDO::FETCH_ASSOC、 :关联数组模式
    PDO::FETCH_NUM、 :索引数组模式
    PDO::FETCH_OBJ、 :对象模式
    PDO::FETCH_LAZY :所有模式(SQL语句和对象)

    2、fetchAll() 通过一次调用返回所有结果,结果是以数组形式保存
    参数: PDO::FETCH_BOTH (default)、
    PDO::FETCH_ASSOC、
    PDO::FETCH_NUM、
    PDO::FETCH_OBJ、
    PDO::FETCH_COLUMN表示取指定某一列,
    如:$rslist = $stmt->fetchAll(PDO::FETCH_COLUMN,2);取第三列
    3、execute() 负责执行一个准备好了的预处理语句
    4. fetchColumn()返回结果集中下一行某个列的值
    5. setFetchMode()设置需要结果集合的类型
    6. rowCount() 返回使用query方法执行的select语句后受影响的行总数
    7. setAttribute()为一个预处理语句设置属性
    8. getAttribute()获取一个声明的属性
    9. errorCode() 获取错误码
    10. errorInfo() 获取错误信息
    11. bindParam() 将参数绑定到相应的查询占位符上
    bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type [, int $length [, mixed $driver_options ]]] ) 其中: $parameter:占位符名或索引偏移量 &$variable:参数的值,需要按引用传递也就是必须放一个变量
    其中参数:$data_type:数据类型PDO::PARAM_BOOL/PDO::PARAM_NULL/PDO::PARAM_INT/PDO::PARAM_STR/
    PDO::PARAM_LOB/PDO::PARAM_STMT/PDO::PARAM_INPUT_OUTPUT
    $length:指数据类型的长度 $driver_options:驱动选项。

    12. bindColumn() 用来匹配列名和一个指定的变量名,这样每次获取各行记录时,会自动将相应的值赋给变量。
    13. bindValue() 将一值绑定到对应的一个参数中
    14. nextRowset() 检查下一行集
    15. columnCount() 在结果集中返回列的数目
    16. getColumnMeta() 在结果集中返回某一列的属性信息
    17. closeCursor() 关闭游标,使该声明再次执行


    在PDO中参数式的SQL语句有两种(预处理sql):
    1.insert into stu(id,name) value(?,?); //示例:3.php
    2.insert into stu(id,name) value(:id,:name); //示例:4.php
    在PDO中为参数式SQL语句赋值有两种:
    1.使用数组
    $stmt->execute(array("lamp1404","qq2"));
    $stmt->execute(array("id"=>"lamp1404","name"=>"qq2")); //示例:6.php
    2.使用方法单个赋值
    $stmt->bindValue(1,"lamp1901"); //示例:3.php
    $stmt->bindValue(2,"qq2");
    $stmt->execute();

    $stmt->bindValue(":id","lamp1901"); //示例:4.php
    $stmt->bindValue(":name","qq2");
    $stmt->execute();

    $id="lamp1401";
    $name="qq2";
    $stmt->bindParam(":id",$id); //示例:5.php
    $stmt->bindParam(":name",$name);
    $stmt->execute();

    预处理

    ----------------------------------------------------
    事务:将多条sql操作(增删改)作为一个操作单元,要么都成功,要么都失败。

    4. PDO对事务的支持
    第一:被操作的表必须是innoDB类型的表(支持事务)
    //更改表的类型为innoDB类型
    mysql> alter table stu engine=innodb;
    Query OK, 29 rows affected (0.34 sec)
    Records: 29 Duplicates: 0 Warnings: 0
    //查看表结构
    mysql> show create table stuG;

    第二:使用PDO就可以操作数据库了
    使用到了PDO中的方法:
    beginTransaction 开启一个事物(做一个回滚点)
    commit 提交事务
    rollBack 事务回滚操作。

    使用情况:当做多条sql语句处理时(增删改),要求是都必须成功。

  • 相关阅读:
    打造系统分析师核心技能
    需求输出---一个创业团队需求卡壳的故事
    Nodejs前端服务器压缩图片
    node使用buffer生成图片
    NodeJS 常用模块积累
    ImageMagick图片服务器
    linux安装杀软 clamAV
    等保2.0与等保1.0的变化
    负载均衡的原理、分类、实现架构,以及使用场景
    等保2.0 三级基线要求项
  • 原文地址:https://www.cnblogs.com/jamesbd/p/3567627.html
Copyright © 2020-2023  润新知