pdo的使用操作2

2024-05-26 16:18
文章标签 使用 操作 pdo

本文主要是介绍pdo的使用操作2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为什么要讲PDO:

(1)市面上使用最多的,大部分企业使用PDO

(2)Mysqli  只支持mysql数据库,PDO支持大部分数据库

(3)以后做的项目都是使用PDO作为数据库抽象层来实现的

mysqli------是mysql数据库的加强:

(预处理机制)

(错误处理机制)

(采用了面向对象的编程模式)

一、PHP如何操作数据库

与具体数据库的扩展:php想操作那个数据库,需要开启这个数据库的扩展,提供操作这个数据库的函数

二、什么是PDO

PDO是一个mysql官方封装的,基于面向对象编程思想的,使用c语言开发的数据库抽象层

三、PDO数据库抽象的概念:

PDO抽象类

它是封装的一个类,就是一个控制数据库的新的操作方法

将具体的操作数据库的代码封装到数据库抽象层,如果出项数据库转移,只需在php代码里高速数据库抽象层,你去使用哪一个数据库就可以了

通过代码引出PDO

<?php

  //写一个函数,根据传递的参数来操作不同的数据库

  function mysql_db($type){

    if($type=='mysql'){

        mysql_connect();

        mysql_select_db();

    }elseif ($type=='mssql'){

        mssql_connect();

        mssql_query();

    }elseif ($type=='oracle'){

        // 具体操作某个数据库的函数

    }

  }

  mysql_db('mysql');

  function mysql_q($type,$sql){

    if($type=='mysql'){

        mysql_query($sql);

    }

  }

?>

一、     如何使用PDO

和当前使用mysql非常像

要想使用mysql需要开启mysql扩展,

需想使用PDO,需要开启PDO扩展

获得PDO对象,调用方法

(1)要开启pdo驱动

Extension = php_pdo.dll

Extension = php_pdo_sqlite.dll

Extension = php_pdo_mysql.dll

开启这个扩展(驱动),就可以使用这个扩展给我们提供类了

2)使用这个类,实例化这个类,调用属性和方法

    <?php

   //使用PDO操作数据库

   //第一个参数:连接数据库的类型:主机名;数据库名

   $dsc 'mysql:host=localhost;dbname=mysql_text';

   $user 'root';

   $pass '123';

   $pdo new PDO($dsc,$user,$pass);//实例化一个类的时候,会自动的先调用__construct()构造函数

   //var_dump($pdo);

  

   //执行sql语句获得

   $sql 'select*fromgoods';

   $result $pdo->query($sql);//query方法返回的是PDOStatement对象

   //如果想获得具体的数据,需要调用对象的方法:fetchAll();参数是类常量,表示返回什么样的数据

   $rows $result->fetchAll(PDO::FETCH_BOTH);

   //var_dump($rows);

  

   //更新数据库的操作

   $sql 'update goods set goods_name="lalala" wheregoods_id=3';

   //执行增删改的语句,exec()方法,执行查询的语句 query()

   //exec()返回受影响的函数      query()返回PDOStatement对象

   $nums $pdo->exec($sql);

   var_dump($nums);

  

   ?>

二、     PDO预编译机制

先将sql语句的数据部分和费数据部分分离开————》将不带数据的部分预编译一下prepare()————》在编译结果上绑定数据bandparam()————》执行编译结果execute()

预编译的好处:1、减少了编译的字符数,编译的速度提高

              2、如果再次执行同样的sql语句,直接绑定数据,减少编译sql语句时间

写代码实现PDO的预编译(与处理机制)

<?php

    //预编译:PDO::prepare($sql);   返回PDOStatement对象

    //绑定数据PDOStamentt->bindParam();  给预编译的结果绑定数据

    //执行编译结果 PDOStament->execute();

   

    //使用PDO操作数据库

    //第一个参数:连接数据库的类型:主机名;数据库名

    $dsn  'mysql:host=localhost;dbname=mysql_text';

    $user 'root';

    $pass '123';

    $pdo new PDO($dsn,$user,$pass);

   //var_dump($pdo);

  

   

    //预编译prepare();参数是不带数据的sql语句

    //先将sql语句中的数据部分用占位符代替 :占位符名称

    $sql 'insert intogoods values(null,:name,:price,:number)';

    $smt $pdo->prepare($sql);  //返回一个PDOStament 对象

    //绑定数据 PDOStament对象的bindParam()来绑定参数:占位符,实际数据

    $goods_name'surface';

    $goods_price'3500';

    $goods_num'41';

    $smt->bindParam(':name',$goods_name);

    $smt->bindParam(':price',$goods_price);

    $smt->bindParam(':number',$goods_num);

    $smt->execute()

?>

三、     PDO的错误处理机制:

1)静默模式

  默认情况下与mysql处理方式一致,不现实错误信息(静默模式)但是我们可以通过固定的方法获得错误信息

2)警告模式

    //更改属性设置错误处理模式

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

3)异常模式,当发生错误时,抛出一个异常

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

   $sql 'select*fromgood';

   try {

   //尝试可能会处错误的代码

   $pdo ->query($sql);

   }catch (PDOException $e){

   //现在捕获异常后,自己看着办,是让他显示出来呢,还是输出到日志文件里呢?

    //通常是将错误信息输出到日志文件里

   var_dump($e->getMessage());

   file_put_contents('D://mysql.log',$e->getMessage());

}

这篇关于pdo的使用操作2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1004962

相关文章

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期