PHP.mk документација

PDO::__construct

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

pdo.construct.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека pdo.construct.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
PDO::__construct

Референца за `pdo.construct.php` со подобрена типографија и навигација.

pdo.construct.php

PDO::__construct

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

PDO::__construct (PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

= NULL

public PDO::__construct(
         string $dsn,
         ?string $username = null,
         Иницијализира контекст за инкрементално хеширање ?string $password = null,
         ?array $options = null
)

Креира PDO инстанца што претставува врска со базата на податоци

Параметри

dsn

Креира PDO инстанца за да претставува врска со бараната база на податоци.

Името на изворот на податоци, или DSN, ги содржи информациите потребни за поврзување со базата на податоци. Генерално, DSN се состои од името на PDO драјверот, проследено со две точки, проследено со синтаксата за поврзување специфична за PDO драјверот. Дополнителни информации се достапни од.

На dsn документацијата специфична за PDO драјверот

параметарот поддржува три различни методи за специфицирање на аргументите потребни за креирање врска со базата на податоци:

dsn Повикување на драјверот

ги содржи целосниот DSN.

dsn Повикување на URI uri: се состои од

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

проследено со URI што ја дефинира локацијата на датотека што содржи DSN стринг. URI може да специфицира локална датотека или далечински URL.

dsn Алијасирање name се состои од име pdo.dsn.name in php.ini што се мапира на

Забелешка:

дефинирање на DSN стринг. php.ini). Исто така, забележете дека позициите на низите започнуваат со .htaccess or httpd.conf

username

Алијасот мора да биде дефиниран во

password

Корисничкото име за DSN стринг. Овој параметар е опционален за некои PDO драјвери.

options

Лозинката за DSN стринг. Овој параметар е опционален за некои PDO драјвери.

Errors/Exceptions

А PDOException се фрла ако обидот за поврзување со бараната база на податоци не успее, без оглед на тоа што PDO::ATTR_ERRMODE е моментално поставено.

Примери

Пример #1 Креирај PDO инстанца преку повикување на драјвер

<?php

$dsn
= 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);

?>

Пример #2 Креирај PDO инстанца преку повикување на URI

Следниот пример претпоставува дека датотеката /usr/local/dbconnect постои со дозволи за датотеки што му овозможуваат на PHP да ја прочита датотеката. Датотеката содржи PDO DSN за поврзување со DB2 база на податоци преку PDO_ODBC драјверот:

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

PHP скриптата потоа може да креира врска со базата на податоци едноставно со поминување на uri: параметар и насочување кон URI на датотеката:

<?php

$dsn
= 'uri:file:///usr/local/dbconnect';
$user = '';
$password = '';

$dbh = new PDO($dsn, $user, $password);

?>

Пример #3 Креирај PDO инстанца користејќи псевдоним

Следниот пример претпоставува дека php.ini ја содржи следната ставка за да овозможи поврзување со MySQL база на податоци користејќи само псевдоним mydb:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"
<?php

$dsn
= 'mydb';
$user = '';
$password = '';

$dbh = new PDO($dsn, $user, $password);

?>

Белешки од корисници 9 белешки

Kiipa на live dot com
12 години пред
To get UTF-8 charset you can specify that in the DSN.

$link = new PDO("mysql:host=localhost;dbname=DB;charset=UTF8");
subme на interia dot pl
пред 17 години
To specify a database connection port use the following DSN string

<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1;port=3333';
?>
theking2 на king точка ma
3 години пред
A generic pattern to connect to a mariadb or mysql database using a settings file

<?php
$_SETTINGS = parse_ini_file('./settings.ini', true);

$db = new \PDO(
  "mysql:hostname={$_SETTINGS['db']['host']};dbname={$_SETTINGS['db']['name']}",
  $_SETTINGS['db']['user'],
  $_SETTINGS['db']['pass'],
  [
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'"
  ]
);
?>
You might not need the options depicted here but I find them convenient. 

Works with a settings.ini file containing for instance:
[db]
host = "localhost"
name = "dbname"
user = "dbuser"
pass = "dbpassword"
piotrekkr на o2 dot pl
пред 15 години
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.
Aymeric S
пред 5 години
When trying to connect to a local database, it seems "uri:file:///" is no longer needed. Just write the PDO pilot name followed by the absolute path of the file.
Example : sqlite:C:\VirtualHosts\phpliteadmin\dbs\surveillance_logeas.s3DB
daviddlavier на gmail dot com
пред 10 години
I'd like to point out that in PHP 7.0 in the dsn parameter you can't use 'host=localhost' to solve this you can use 'host=127.0.0.1' instead.
Francesco Montanari
пред 5 години
Most of the information in the comment here is outdated or wrong.

You do can use host=localhost to connect via socket, which is faster than TCP, so setting 127.0.0.1 is a performance loss.

To use proper utf you should use utf8mb4, for example:

$db = new PDO('mysql:host=' . DATABASE_HOST . ';dbname='. DATABASE_NAME .';charset=utf8mb4', DATABASE_USER, DATABASE_PASSWORD);
Victor T.
пред 16 години
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\''));
?>
Michal Stefanak
3 години пред
If you override PDO with own class and you want to implement alias from php.ini, you have to get it with `get_cfg_var` instead of `ini_get`.

<?php
class PDO extends \PDO
{
    public function __construct(string $dsn, ?string $username = null, ?string $password = null, ?array $options = null)
    {
        //alias
        if (!str_contains($dsn, ':')) {
            $dsn = get_cfg_var('pdo.dsn.' . $dsn);
            if (!$dsn) {
                throw new PDOException('Argument #1 ($dsn) must be a valid data source name');
            }
        }

        // your additional logic

        parent::__construct($dsn, $username, $password, $options);
    }
}
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.