精华内容
下载资源
问答
  • PDO

    2019-06-09 20:12:46
    一、创建一个PDO对象 try{ $pdo = new PDO(“mysql:host=localhost;dbname=pdo”, “root”, “root”); } catch (PDOException) { throw $e; } 二、设置PDO错误提示级别 $pdo -> setAttribute(PDO::...

    一、创建一个PDO对象

    try{
    $pdo = new PDO(“mysql:host=localhost;dbname=pdo”, “root”, “root”);
    }
    catch (PDOException) {
    throw $e;
    }
    

    二、设置PDO错误提示级别

    $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    

    三、PDO执行语句

    $sql = “select * from test”;
    $res = pdo−>query( pdo -> query(pdo−>query(sql);
    

    四、PDO获取数据语句

    $arr = $res -> fetchAll(PDO::FETCH_ASSOC);
    

    或者

    arr=[];while( arr = [];while(arr=[];while(row = $res -> fetch(PDO::FETCH_ASSOC)) {
    $arr[] = $row
    }
    

    五、PDO预编译

    预编译插入数据

    使用问号作为占位符,如:

    $sql = “insert into test values (?, ?)”
    $stmt = pdo−>prepare( pdo -> prepare(pdo−>prepare(sql);
    $stmt -> execute(array(1, “Lex”));
    

    或者

    $sql = “insert into test values(?, ?)”;
    $stmt = pdo−>prepare( pdo -> prepare(pdo−>prepare(sql);
    $stmt -> bindParam(1, 1);
    $stmt -> bindParam(2, “Lex”);
    $stmt -> execute();
    

    使用命名参数作为占位符

    $sql = "insert into test values(:id, :name);
    $stmt = pdo−>prepare( pdo -> prepare(pdo−>prepare(sql);
    $stmt -> execute(array(‘id’ => 1, ‘name’ => ‘Lex’));
    

    或者

    $sql = “insert into test values(:id, :name)”;
    $stmt = pdo−>prepare( pdo -> prepare(pdo−>prepare(sql);
    $stmt -> bindParam(’:id’, 1);
    $stmt -> bindParam(’:name’, ‘Lex’);
    $stmt -> execute()
    

    预编译查询数据

    $sql = “select * from test”;
    $stmt = pdo−>prepare( pdo -> prepare(pdo−>prepare(sql);
    $stmt -> execute();
    $res = $stmt -> fetchAll();
    

    或者

    $sql = “select * from test”;
    $stmt = pdo−>prepare( pdo -> prepare(pdo−>prepare(sql);
    $stmt -> execute();
    arr=[];while( arr = [];while(arr=[];while(row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
    $arr[] = $row;
    }
    

    六、PDO事务处理

    try {
    $pdo = new PDO(“mysql:host=localhost;dbname=pdo”);
    }
    catch (PDOException $e) {
    die("Connection failed! ". $e -> getMessage());
    }
    $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    try {
    $pdo -> beginTransaction();
    $sql = “insert into test values (?, ?)”;
    $stmt = pdo−>prepare( pdo -> prepare(pdo−>prepare(sql);
    $stmt -> execute(array(1, “Lex”));
    $stmt -> execute(array(2, “Venus”));
    }
    catch (PDOException $e) {
    $e -> getMessage();
    $pdo -> rollback();
    }
    
    展开全文
  • pdo

    2019-09-25 02:34:37
    PDO 什么是pdopdo其实是因为每个数据库都有自己的语法规则,语法不同,如果项目在后期需要转换数据库,很多代码需要重新敲打,这样工作效率就大大降低了,所以通过封装一个类,通过一种方法操作各种数据库就是PDO...

    PDO

    什么是pdopdo其实是因为每个数据库都有自己的语法规则,语法不同,如果项目在后期需要转换数据库,很多代码需要重新敲打,这样工作效率就大大降低了,所以通过封装一个类,通过一种方法操作各种数据库就是PDO所做的事!

    PDO的开启

    PDO的使用是需要事先开启扩展,开启扩展的方法:

    php.ini配置文件中找到extension=php_pdo_mysql.dll,将左侧的注释符去掉即开启

    然后将Apache重启!

    PDO的实例化

    PDO的实例化只需要new PDO即可,

    PDO的构造方法

    PDO的构造方法是用来连接数据库

    语法如下:

    PDO::__construct()

    需要四个参数:

    $dsn:数据源名称,其实就是告诉PDO需要选择哪种类型的数据库,主机号和端口号是什么,选择哪个数据库以及采用什么字符编码等!

    $username数据库的用户名

     

    $password用户的密码

     

    $driver_options附加驱动选项,暂时用默认

    注意,给$dsn赋值有固定的语法,语法如下:

    $dsn=”数据库类型:host=主机地址;post=端口号;dbname=所选数据库名;charset=字符编码”;

    PDO的增删改操作

    PDO的增删改操作主要是调用pdo对象的exec方法

     exec(执行语句)

    返回的数据是整型,指被更改的行数

    通过if语句能够判断到是否更改成功,pdo大部分内容是私有的,只有通过特定的方法才能获取到它里面的东西;

    PDO实现查询功能

    query 方法

    MySQL中的mysql_query()方法一样,返回的是一个PDOStatement类的对象,但是不能直接打印出对象内的属性

    PDOStatement对象

    rowCount

    作用:获取查询结果中的总行数(总记录数)

    columnCount

    作用:获取查询结果中的总列数(总字段数)

    fetch

    作用:

    每次都从PDOStatement结果集中获取一条记录,同时把指针下移!其中该方法可以有一个参数,该参数的作用就是控制返回值的类型!

    对象名->fetch(参数)

     

    最常用的参数有:

    PDO::FETCH_ASSOC返回一个关联型的数组(数组的下标就是原记录中字段的名称),效果类似于以前的mysql_fetch_assoc

    PDO::FETCH_NUM返回一个索引数组,效果类似于以前的mysql_fetch_row

    PDO::FETCH_BOTH返回一个索引和关联并存的混合数组,效果类似于mysql_fetch_array,也是默认值!

    PDO::FETCH_OBJ返回一个对象,其中对象的属性名就是字段名!

    语法:

    fetchAll

    作用:

    返回一个结果集中的所有的记录,形成一个二维数组!

    fetchColumn

    作用:

    每次获取一列信息中的一条记录,并将指针下移!

    该方法需要一个参数,用来代表需要获取哪一列的信息,第一列为0,第二列为1,依次类推!

    fetchObject

    效果等于fetch(PDO::FETCH_OBJ);

    PDO的预处理技术

    含义:每次通过PHP操作MySQL等数据库,没发送一条执行语句数据库就得操作一次,然后结束操作,这样工作效率会大大降低

    预处理的基本策略:

     

    sql语句一分为二:

    第一部分为前面命令和结构都相同的部分

    第二部分为后面可变的数据部分

     

    然后在执行sql语句的时候,先将前面相同的命令和结构部分发送给mysql服务器进行一次预处理操作,但是此时并没有真正的执行语句!

    而为了保证sql语句的结构完整性,在第一次发送sql语句的时候可以将其中可变的数据部分用一个数据占位符来表示!(比如常见的占位符是一个问号?)

     

    此时,系统会把该预处理后的结果暂时放到内存中,这样再次执行后续操作的时候,只需要传递相关的参数(也就是与数据占位符相对应的数据)就行了!

    第一步 发送预处理语句

    需要调用prepare方法

    第二步:绑定参数

    此时,我们需要调用PDOStatement对象的bindParam方法:

    bingdParam 方法有两个参数

    参数一,占位符的位置,从1开始

    参数二:数值(变量)

    第三步:执行预处理语句

    这个时候,又需要调用结果对象PDOStatement中的execute方法,如果执行成功,就返回true,否则就返回false

    PDO事务处理

    事务处理的概念:

    举个列子,你在使用支付宝给好友转账的时候,如果刚好数据库出现问题,你这边用户余额扣除成功了,对方增加余额没成功,那么这次操作是不是你就血亏啦,所以,就诞生了事务处理这么一个概念,当双方都操作成功的时候,执行才算成功,不然一切都是无效的

    开启事务:beginTransaction()

    回滚操作:rollback()

    执行提交:commit()

    我们可以通过判断执行提交结果是否成功,如果两个有一个不成功的话,就回滚操作,回到开启事务之前!

    PDO的相关属性(参数)

    PDO的参数有很多,我们主要学习以下的几个:

    PDO::ATTR_AUTOCOMMIT自动提交    (属性名)

    只有两个值:01   ps:属性值)

    0代表不开启自动提交,手动提交(处理事务就是非自动提交)

    1代表开启自动提交,也是默认值

     

    PDO::ATTR_CASE返回结果集的大小写(重要)  ps:属性名

    属性值:

    PDO::CASE_LOWER:返回的结果集全部小写

    PDO::CASE_UPPER:返回的结果集全部大写

    PDO::CASE_NATURAL:返回的结果集全部大写(跟表中大小写保持一致)

     

    PDO::ATTR_ERRMODE返回的错误模式(重要) ps;属性名

    属性值:

    PDO::ERRMODE_SILENT :静默模式,也是系统默认的模式

    PDO::ERRMODE_WARNING :警告模式

    PDO::ERRMODE_EXCEPTION :异常模式

     

    要用到的两个方法:

     

    设置PDO属性:setAttribute(属性名,属性值);  

    获取PDO属性:getAttribute(int)

    PDO异常处理

    异常的概念

    异常,其实就是错误,不过是在面向对象编程语言中一种典型的错误处理方式!就是将错误信息,放到一个对象里面!

     

    异常的发生有一个前提,就是必须保证语法是正确的!

    Pdo默认的异常处理模式是静默模式,也就是即使出错,它也不会报错,就是这么的狗屎!

    异常的处理

    首先要发生异常!

    所谓发生,就是指抛出一个异常!

     

    然后是处理异常!

    所谓处理,就是一旦异常出现,要得到并处理这个异常!

    通常是由两个阶段组成:监听和捕获!

    抛出异常

    关键字:throw

    语法形式:

    throw 异常对象

     

    这里的异常对象,需要实例化系统预定义的异常类(类名叫Exception或者是其扩展类才可以!

    监听

    关键字try

    利用关键字try可以监视一段代码内,是否发生了异常!

    语法为:

     

    try{

    被监视的代码段

    }

    捕获

    关键字:catch

    一旦监听的代码出现了异常(有异常抛出),则可以利用catch关键字进行异常的捕获!

    PDO中错误处理方式

    所谓的错误处理的方式,就是指一旦出现了错误,系统应该如何对待!

     

    PDO一共提供了三种错误处理的方式:

     

    PDO::ATTR_ERRMODE返回的错误模式(重要)

    PDO::ERRMODE_SILENT 静默模式,也是系统默认的模式

    PDO::ERRMODE_WARNING :警告模式

    PDO::ERRMODE_EXCEPTION :异常模式

    转载于:https://www.cnblogs.com/caiwenhao98/p/6188685.html

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,938
精华内容 9,175
关键字:

pdo