PDO
在线手册:中文  英文

PDO::__construct

(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)

PDO::__construct 创建一个表示数据库连接的 PDO 实例

说明

PDO::__construct() ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )

创建一个表示连接到请求数据库的数据库连接 PDO 实例。

参数

dsn

数据源名称或叫做 DSN,包含了请求连接到数据库的信息。

通常,一个 DSN 由 PDO 驱动名、紧随其后的冒号、以及具体 PDO 驱动的连接语法组成。更深入的信息能从 PDO 具体驱动文档找到。

The dsn 参数支持三种不同的方式 创建一个数据库连接:

Driver invocation

dsn 包含完整的DSN。

URI invocation

dsn consists of uri: followed by a URI that defines the location of a file containing the DSN string. The URI can specify a local file or a remote URL.

uri:file:///path/to/dsnfile

Aliasing

dsn consists of a name name that maps to pdo.dsn.name in php.ini defining the DSN string.

Note:

别名必须得在 php.ini 中定义了,不能是在 .htaccesshttpd.conf 中 。

username

DSN字符串中的用户名。对于某些PDO驱动,此参数为可选项。

password

DSN字符串中的密码。对于某些PDO驱动,此参数为可选项。

driver_options

一个具体驱动的连接选项的键=>值数组。

返回值

成功则返回一个PDO对象。

错误/异常

如果试图连接到请求的数据库失败,则 PDO::__construct() 抛出一个 PDO异常(PDOException) 。

范例

Example #1 Create a PDO instance via driver invocation

<?php
/* Connect to an ODBC database using driver invocation */
$dsn 'mysql:dbname=testdb;host=127.0.0.1';
$user 'dbuser';
$password 'dbpass';

try {
    
$dbh = new PDO($dsn$user$password);
} catch (
PDOException $e) {
    echo 
'Connection failed: ' $e->getMessage();
}

?>

Example #2 Create a PDO instance via URI invocation

The following example assumes that the file /usr/local/dbconnect exists with file permissions that enable PHP to read the file. The file contains the PDO DSN to connect to a DB2 database through the PDO_ODBC driver:

odbc:DSN=SAMPLE;UID=john;PWD=mypass

The PHP script can then create a database connection by simply passing the uri: parameter and pointing to the file URI:

<?php
/* Connect to an ODBC database using driver invocation */
$dsn 'uri:file:///usr/local/dbconnect';
$user '';
$password '';

try {
    
$dbh = new PDO($dsn$user$password);
} catch (
PDOException $e) {
    echo 
'Connection failed: ' $e->getMessage();
}

?>

Example #3 使用别名创建一个PDO实例

The following example assumes that php.ini contains the following entry to enable a connection to a MySQL database using only the alias mydb:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"
<?php
/*  使用别名连接到一个ODBC数据库  */
$dsn 'mydb';
$user '';
$password '';

try {
    
$dbh = new PDO($dsn$user$password);
} catch (
PDOException $e) {
    echo 
'Connection failed: ' $e->getMessage();
}

?>


PDO
在线手册:中文  英文

用户评论:

Anonymous (2013-05-29 05:30:36)

Sqlite:

<?php
try{     
    
$pdo = new PDO('sqlite:example.db');
}catch (
PDOException $e){
     die (
'DB Error');
}
?>

If 'example.db' does not exist, no exception is thrown but the file 'example.db' is created.

piotrekkr at o2 dot pl (2010-09-15 00:19:33)

To connect throught unix socket you need to use 
<?php
$dsn 
'mysql:dbname=testdb;unix_socket=/path/to/socket';
?>

You musn't specify host when using socket.

Mitsuaki Ishimoto (2010-08-29 11:14:57)

You have to use the following option "MYSQL_ATTR_READ_DEFAULT_FILE" to prevent someone from attacking your system by SQL Injection.

<?php
$dsn 
'mysql:host=' DB_HOST ';dbname=' DB_NAME;
$dbh = new PDO(
    
$dsn,
    
DB_USER,
    
DB_PASS,
    array(
        
PDO::MYSQL_ATTR_READ_DEFAULT_FILE => '/etc/my.cnf'
    
)
);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARESfalse);
?>

Victor T. (2010-02-20 09:34:41)

If you use the UTF-8 encoding, you have to use the fourth parameter :

<?php
$db 
= new PDO('mysql:host=myhost;dbname=mydb''login''password', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
?>

subme at interia dot pl (2008-11-25 14:03:45)

To specify a database connection port use the following DSN string

<?php
$dsn 
'mysql:dbname=testdb;host=127.0.0.1;port=3333';
?>

易百教程