PHP 5.6.0beta1 released

PDO::__construct

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

PDO::__constructBir veritabanı bağlantısını temsil eden bir PDO nesnesi oluşturur

Açıklama

PDO::__construct ( string $dsn [, string $kullanıcı [, string $parola [, array $seçenekler ]]] )

Belirtilen veritabanına kurulan bağlantıyı temsil eden bir PDO nesnesi oluşturur.

Değiştirgeler

dsn

Veritabanına bağlantı için gerekli bilgiyi içeren veri kaynağının ismi.

Genellikle bir veri kaynağı ismi, aralarında bir noktalı virgül bulunan sürücü ismi ile PDO sürücüsüne özgü bağlantı sözdiziminden oluşur. Bu konuda daha ayrıntılı bilgiyi PDO Sürücüleri sayfasında bulabilirsiniz.

dsn değiştirgesi, bir veritabanı bağlantısı oluşturmak için gereken üç farklı yöntemi destekler:

Sürücü isteği

dsn değiştirgesi, veri kaynağı ismi için gereken herşeyi içerir.

URI isteği

dsn değiştirgesi, uri: sözcüğünü takibeden, veri kaynağı isim dizgesini içeren bir dosyanın yerini belirten bir özkaynak betimleyicisi içerir.

uri:file:///bir/yol/dsndosyası

Takma ad kullanımı

dsndeğiştirgesi, php.ini içinde DSN dizgesini tanımlayan pdo.dsn.isim ile eşleşen isim adını içerir.

Bilginize:

Takma ad, .htaccess veya httpd.conf dosyasında değil php.ini dosyasında tanımlanmış olmalıdır.

kullanıcı

DSN dizgesi için kullanıcı ismi. Bu değiştirgenin belirtilmesi bazı PDO sürücüleri için isteğe bağlıdır.

parola

DSN dizgesi için parola. Bu değiştirgenin belirtilmesi bazı PDO sürücüleri için isteğe bağlıdır.

seçenekler

Sürücüye özgü bağlantı seçeneklerini içeren bir isim=>değer çiftleri dizisi.

Dönen Değerler

Başarı durumunda bir PDO nesnesi döner.

Hatalar/İstisnalar

PDO::__construct(), istenen veritabanına bağlantı sağlanamazsa bir PDOException istisnası oluşturur.

Örnekler

Örnek 1 - Sürücü isteğiyle PDO örneğinin oluşturulması

<?php
/* Sürücü isteğiyle bir ODBC veritabanına bağlanalım */
$dsn 'mysql:dbname=testdb;host=127.0.0.1';
$user 'dbuser';
$password 'dbpass';

try {
    
$dbh = new PDO($dsn$user$password);
} catch (
PDOException $e) {
    echo 
'Bağlantı kurulamadı: ' $e->getMessage();
}

?>

Örnek 2 - URI isteğiyle PDO örneğinin oluşturulması

Aşağıdaki örnekte PHP'nin /usr/local/dbconnect dosyasını okuma iznine sahip olduğu varsayılmıştır. Dosya, PDO_ODBC sürücüsü üzerinden bir DB2 veritabanına bağlanmak için gereken şu bilgiyi içermektedir:

odbc:DSN=SAMPLE;UID=birey;PWD=parola

Bu dosyanın yerini içeren bir uri: dizgesi ile veritabanı bağlantısı oluşturulabilir:

<?php
/* URI isteğiyle bir ODBC veritabanına bağlanalım  */
$dsn 'uri:file:///usr/local/dbconnect';
$user '';
$password '';

try {
    
$dbh = new PDO($dsn$user$password);
} catch (
PDOException $e) {
    echo 
'Bağlantı kurulamadı: ' $e->getMessage();
}

?>

Örnek 3 - Bir takma ad kullanarak PDO örneğinin oluşturulması

Aşağıdaki örnekte, php.ini dosyasının bir MySQL veritabanına bağlantı kurmak için mydb adını takma ad olarak kullamayı mümkün kılan şöyle bir girdi içerdiği varsayılmıştır:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"
<?php
/* Bir takma ad kullanarak bir ODBC veritabanına bağlanalım */
$dsn 'mydb';
$user '';
$password '';

try {
    
$dbh = new PDO($dsn$user$password);
} catch (
PDOException $e) {
    echo 
'Bağlantı kurulamadı: ' $e->getMessage();
}

?>

add a note add a note

User Contributed Notes 7 notes

up
21
Kiipa at live dot com
5 months ago
To get UTF-8 charset you can specify that in the DSN.

$link = new PDO("mysql:host=localhost;dbname=DB;charset=UTF8");
up
11
subme at interia dot pl
5 years ago
To specify a database connection port use the following DSN string

<?php
$dsn
= 'mysql:dbname=testdb;host=127.0.0.1;port=3333';
?>
up
10
Victor T.
4 years ago
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\''));
?>
up
4
piotrekkr at o2 dot pl
3 years ago
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.
up
3
Anonymous
10 months ago
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.
up
1
Anonymous
9 days ago
To connect to the database via a function use this and call the getConnection function in the class constructor.

<?php
class Connection{

    protected
$db;

    public function
Connection(){

   
$conn = NULL;

        try{
           
$conn = new PDO("mysql:host=localhost;dbname=dbname", "dbuser", "dbpass");
           
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            } catch(
PDOException $e){
                echo
'ERROR: ' . $e->getMessage();
                }   
           
$this->db = $conn;
    }
   
    public function
getConnection(){
        return
$this->db;
    }
}

?>
up
-32
Mitsuaki Ishimoto
3 years ago
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_PREPARES, false);
?>
To Top