Rumah  >  Artikel  >  pembangunan bahagian belakang  >  使用PDO构造函数连接数据库及DSN详解

使用PDO构造函数连接数据库及DSN详解

黄舟
黄舟asal
2017-04-28 17:37:164450semak imbas

使用PDO构造函数连接数据库及DSN详解

pdo是php5中新加入的数据库抽象层,为了解决访问不同数据库统一接口的问题。类似于PEAR::DB类和ADODB类的操作,不过它是直接封装再php扩展中,可以自由选择使用。

在上一篇《什么是PDO?PDO的概特点以及安装PDO的方法》中,我们介绍了什么是PDO,介绍了PDO的特点以及安装,那么我们这篇文章介绍PDO构造函数连接数据库以及DSN详情!

PDO构造函数连接数据库

在PDO中,要建立数据库的连接需要实例化 PDO 的构造函数,PDO构造函数的语法格式如下:

_construct(string $dsn[,string $username[,string $password[,array $driver_options]]])

构造函数的参数说明如下:

dsn:数据源名称,包括主机名端口号和数据库名称。

username:连接数据库的用户名。

password:连接数据库的密码。

driver_options:连接数据库的其它选项。

那么我们下面直接用实例讲解,通过PDO连接 MySQL 数据库,具体代码如下:

<?php
header("Content-Type:text/html; charset=utf-8");    //设置页面的编码格式
$dbms = "mysql";                                  // 数据库的类型
$dbName ="php_cn";                                //使用的数据库名称
$user = "root";                                   //使用的数据库用户名
$pwd = "root";                                    //使用的数据库密码
$host = "localhost";                              //使用的主机名称
$dsn  = "$dbms:host=$host;dbName=$dbName ";       
try{                                             //捕获异常
    $pdo = new PDO($dsn,$user,$pwd);             //实例化对象
    echo  "PDO连接数据库成功";
}catch (Exception $e){
    echo $e->getMessage()."<br>";
}

页面输出的结果如下图:

77.png

注意:如果上面有的地方填错了,会通过try catch语句抛出异常!

DSN详解

什么是DSN?

 DSN是Data Source Name(数据源名称)的首字母缩写。DSN提供连接数据库需要的信息。PDO的DSN包括3部分:PDO驱动名称(如:mysql、sqlite或者pgsql)、冒号和驱动特定的语法。每种数据库都有其特定的驱动语法。

在使用不同的数据库时,必须明确数据库服务器是完全独立与 PHP 的,是实体。但是在实际的情况可能是数据库服务器与 Web服务器不在同一台计算上,此时需要通过PDO连接数据库时,就修改DSN中的主机名称。

由于数据库服务器只是特定的端口上监听连接请求。每种数据库服务器具有一个默认的端口号(MySQL 是3306),但是数据库管理员可以对端口号进行修改,因此有可能 PHP找不到数据库的端口号,此时就可以在 DSN中包含端口号。比如:

$dsn="mysql:host=127.0.0.1;port=3306;dbname=admin";

由于一个数据库中可能同时拥有多个数据库,所以通过DSN连接数据库时,通常都包括数据库名称,这样可以确保连接的是用户想要的数据库,而不是其他的数据库了!

关于使用PDO构造函数连接数据库和DSN详解我们就介绍到这里,大家可以在本地测试一下,那么我们下面给大家介绍 PDO中执行SQL语句的几种方法,具体请阅读《PDO中执行SQL语句的三种方法》!

Atas ialah kandungan terperinci 使用PDO构造函数连接数据库及DSN详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn