0

    PHP数据库驱动扩展概述与不同方式连接数据库总结

    2023.07.06 | admin | 122次围观

    2.使用PDO抽象层与数据库通信

    PDO中文简称数据对象, 英文全称:PHP Database Object

    PDO数据库访问抽象层是统一各种数据库的访问接口、是PHP应用中的一个数据库抽象层规范

    PDO提供了一个统一的API接口, 可以使得你的PHP应用不去关心具体要连接的数据库服务器系统类型

    通俗点说, 也就是如果你使用PDO的API,可以在任何需要的时候 无缝切换数据库服务器,比如从Firebird到MySQL,仅仅需要修改很少的PHP 代码就可以办到! 是不是很方便呢 ?

    小提示: 利用 PDO 扩展自身并不能实现任何数据库功能, 注意是功能! 必须使用一个具体数据库的PDO驱动来访问想要的数据库服务(它只是一个接口规范)

    但是一个接口提供的兼容性越强,它的定制性、特异性就相应越弱(这个应该不难理解吧)

    PDO接口API的主要缺点是会限制让你不能使用MySQL服务端提供所有的数据库高级特性。

    比如,PDO不允许使用MySQL支持的多语句执行, 如下图

    在PHP5中,PDO目前已经支持大量数据库, 例如

     1. sqlite
     2. mysql
     3. pgsql
     4. mssql 
     ...

    PDO是基于PHP扩展框架实现的,它的源码在PHP目录的ext/php_pdo_*

    再一次强调,PDO只是一个接口规范,它自身并不实现任何的数据库功能,开发者必须使用一个具体数据库的"PDO驱动"来访问特定的数据库

    php_pdo_mysql扩展

    PDO连接MySQL要在php.ini中的配置参数是: extension=php_pdo_mysql.dll 这个配置必须要打开才能连接MySQL服务

    基本使用案例如下

         $dbhost="主机名";
         $dbname="数据库名称";
         $dbusr="用户名";
         $dbpwd="密码";
         $dbhdl=NULL;
         $dbstm=NULL;
         
         //连接数据库参数配置
         $opt = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',); 
         $dsn='mysql:host=' . $dbhost . ';port=3306;dbname=' . $dbname;
         try 
         {
             $dbhdl = new PDO($dsn, $dbusr, $dbpwd, $opt); 
             //设置属性  错误报告 和 错误抛出异常
             $dbhdl->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
         } 
         catch (PDOExceptsddttrtion $e) 
         {
             //return PDOException
             print "Error!: " . $e->getMessage() . "
    ";          die();     }     // 执行SQL语句,将结果集作为PDOStatement对象返回      $dbstm = $dbhdl->query('SELECT * from p8_ad_user LIMIT 0,1');     //从包含的结果集当中取出所有行并且返回数组      $rows = $dbstm->fetchAll(PDO::FETCH_ASSOC);//也可以使用$rows = $dbhdl->Fetch();   //打印结果      print_r($rows);  ​  ​

    php_pdo_pgsql扩展

    extension=php_pdo_pgsql.dll

    PDO连接PostgreSQL 要在php.ini中的配置参数是: extension=php_pdo_pgsql.dll 这个配置必须要打开才能连接PostgreSQL 服务

    这个其实我也没怎么常用!

    基本使用案例如下

         $host = "主机地址";
         $user = "用户名";
         $pass = "密码";
         $db = "数据库名称"; 
         $cursor = "cr_123456";
     ​
         try
         {
             //连接配置
             $dbh = new PDO("pgsql:host=$host;port=5432;dbname=$db;user=$user;password=$pass");
             echo "Connected

    ";     }      catch (Exception $e)     {          echo "Unable to connect: " . $e->getMessage() ."

    ";     }      $dbh->beginTransaction();         //执行查询      $query = "SELECT * from p8_ad_user LIMIT 0,1";      $dbh->query($query);      $query = "FETCH ALL IN \"$cursor\"";  ​      echo "begin data

    ";      //遍历结果      foreach ($dbh->query($query) as $row)     {          echo "$row[0] $row[1] $row[2]
    ";     }        echo "end data";

    这里只简单的说一说Mysql、PostGreSQL的案例,事实上php无法下载文件到本地,PDO这种抽象层方式可以访问目前主流的大多数的数据库

    3.使用ODBC抽象层与数据库通信ODBC基本介绍

    ODBC在PHP的手册上基本上都全是英文的 所以对一些英文不好的小白可能不太友好 ,在这里我也简单的说一下

    ODBC的英文全称 (Open Database Connectivity) 是一种开放数据库互连 也就是一个应用程序编程接口(Application Programming Interface,简称API),使我们有能力连接到某个数据源、它为编写关系数据库的客户软件提供了一种统一的接口。

    使用ODBC API 的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信、

    ODBC 是为客户应用程序访问关系数据库时提供的一个标准的接口、对于不同的数据库php无法下载文件到本地,ODBC 提供了统一的 API,使用该 API 来访问任何提供了 ODBC 驱动程序的数据库

    图解如下

    PHP数据库驱动扩展概述与不同方式连接数据库总结

    总的来说和之前说的扩展API接口、PDO抽象层 略有不同,使用ODBC连接数据库要稍微麻烦一点

    使用ODBC需要对目标数据库服务器的操作系统进行一些配置,即创建ODBC数据源,然后才可以进行ODBC连接, 就如同上面的图中 我们要在接口驱动程序管理器中配置ODBC数据源, 比如我们要使用ODBC连接MySQL就要先安装MySQL的ODBC驱动程序!

    MySQL ODBC驱动安装和配置数据源

    第一步

    驱动程序下载地址选择适合自己电脑版本(我的操作系统是Win10,64位)

    进入下载界面后,我们不登录(Login)也不注册(Sign Up)。直接点左下角的【No thanks,just start my download.】即可开始下载。

    下载完安装包后,双击打开安装包,按照默认选项进行安装即可。

    第二步

    配置数据源

    打开控制面板\所有控制面板项\管理工具\ODBC 数据源

    在控制面板下的管理工具,找到ODBC数据源后 双击打开

    在【用户DSN】选项卡中单击【添加】按钮,然后选择MySQL ODBC 8.0 Unicode Driver 单击完成!

    注意 :这里要说明一下“MYSQL ODBC 8.0 ANSI Driver”和“MySQL ODBC 8.0 Unicode Driver”的区别: ①MySQL ODBC 8.0 ANSI Driver 只针对有限的字符集的范围; ②MySQL ODBC 8.0 Unicode Driver 提供了更多字符集的支持,也就是提供了多语言的支持

    单击完成后会弹出填写配置信息对话框 前两个选项可根据项目功能信息填写, 然后按具体情况填写TCP/IP Server和Port, 然后是MySQL用户名、密码、数据库名称。

     Data Source Name:   //数据源名称,可自拟(最好跟项目功能挂钩)
     Description:       //关于此数据源的描述,主要功能等,可不填写
     TCP/IP Server:     //服务器名称,可以是机器名,也可以是IP地址;若是本地可填写“localhost”
     Port:              //MySQL服务的端口号,默认是3306,也可在安装MySQL时自己设定
     User:              //用户名,默认是root,也可在安装MySQL时自己设定
     Password:          //密码
     Database:          //数据库名称

    填写完后可点击【Test】按钮,测试一下连接是否配置成功!如果成功会有连接成功的提示!

    若测试成功,再点击 OK 按钮即可!在用户DSN处即可查看到最新创建的ODBC

    到这里就配置好了 MySQL ODBC驱动程序了

    PHP用ODBC连接MySQL

    首先检查PHP目录下的php.ini中,extension=odbc 扩展是否打开!

    代码案例如下:

     $dsn="Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=shop;charset=utf8";
     $conn_odbc = odbc_connect($dsn, "root", "密码");
     //如果SQL命令执行成功,则返回ODBC结果标识符
     $row = odbc_do($conn_odbc,"SELECT * FROM test4");
     //获取数据总条数
     $odbc_num_rows = odbc_num_rows($row);
     echo "找到记录数量:".$odbc_num_rows;
     echo "
    ";  ​  //从标识当中判断是否有行  if (odbc_fetch_row($row)){      //获取结果数据      echo '名称:'.odbc_result($row,"brand");      echo '
    ';      echo '颜色:'.odbc_result($row,"color");  }

    特别注意: 编码的一定要统一!

    总结

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论