Heim  >  Artikel  >  Datenbank  >  Rufen Sie Konstruktoren auf verschiedene Arten auf, um PDO-Objekte zu erstellen

Rufen Sie Konstruktoren auf verschiedene Arten auf, um PDO-Objekte zu erstellen

黄舟
黄舟Original
2017-05-20 17:19:011702Durchsuche

Der Konstruktor kann auf verschiedene Arten aufgerufen werden, um ein PDO-Objekt zu erstellen

Der Konstruktor kann auf verschiedene Arten aufgerufen werden, um ein PDO-Objekt zu erstellen. Im Folgenden werden MySQL und Oracle verbunden. Am Beispiel des Servers stellen wir die verschiedenen Aufrufmethoden der Konstruktionsmethode vor.

1. Betten Sie Parameter in den Konstruktor ein

Im folgenden Beispiel einer Verbindung zum Oracle-Server laden Sie den OCI-Treiber in die DSN-Zeichenfolge Das Programm gibt außerdem zwei optionale Parameter an: Der erste ist der Datenbankname und der zweite der Zeichensatz. Verwenden Sie einen bestimmten Zeichensatz, um eine Verbindung zu einer bestimmten Datenbank herzustellen. Wenn keine Informationen angegeben werden, wird die Standarddatenbank verwendet. Der Code lautet wie folgt:

<?php
try{
    $dbh = new PDO("OCI:dbname = accounts;charset=UTF8","scott","tiger");
}catch (PDOException $e){
    echo "数据库连接失败:".$e->getMessage();
}
?>

OCI:dbname=accounts teilt PDO mit, dass es den OCI-Treiber und die Datenbank „accounts“ verwenden soll. Für den MySQL-Treiber wird alles nach dem ersten Doppelpunkt als MySQL-DSN verwendet. Die Anzeige beim Herstellen einer Verbindung zum MySQL-Server lautet wie folgt:

<?php
$dbms = "mysql";                                  // 数据库的类型
$dbName ="php_cn";                                //使用的数据库名称
$user = "root";                                   //使用的数据库用户名
$pwd = "root";                                    //使用的数据库密码
$host = "localhost";                              //使用的主机名称
$dsn  = "$dbms:host=$host;dbname=$dbName";
try {
    $pdo = new PDO($dsn, $user, $pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
}catch (PDOException $e){
   echo "数据库连接失败:".$e->getMessage();
}
?>

Andere Treiber analysieren ihren DSN ebenfalls auf unterschiedliche Weise. Wenn der Treiber nicht geladen werden kann oder ein Verbindungsfehler auftritt, wird eine PDOException ausgelöst . Damit Sie entscheiden können, wie Sie mit dem Scheitern am besten umgehen. Das Weglassen der try...catch-Kontrollstruktur hat keinen Vorteil; wenn die Ausnahmebehandlung nicht auf einer höheren Ebene in der Anwendung definiert ist, wird das Skript beendet, wenn die Datenbankverbindung nicht hergestellt werden kann.

2. Parameter in einer Datei speichern

Beim Erstellen eines PDO-Objekts können Sie die DSN-Zeichenfolge in einer anderen lokalen oder Remote-Standortdatei ablegen , und verweisen Sie im Konstruktor auf diese Datei, wie unten gezeigt:

<?php
try{
    $dbh = new PDO(&#39;uri:file:///usr/localhost/dbconnect&#39;,&#39;webuser&#39;,&#39;password&#39;);
}catch(PDOException $e){
    echo &#39;连接失败:&#39;.$e->getMessage();
}
?>

Solange Sie den DSN-Treiber in der Datei /usr/localhost/dbconnect ändern, können Sie zwischen mehreren Datenbanksystemen wechseln, aber machen Stellen Sie sicher, dass die Datei dem Benutzer gehört, der für die Ausführung des PHP-Skripts verantwortlich ist, und dass dieser Benutzer über die erforderlichen Berechtigungen verfügt.

3. Verweisen Sie auf die php.ini-Datei

Sie können DSN-Informationen auch in der Konfigurationsdatei des PHP-Servers pflegen, sofern In der php.ini-Datei werden Zhongba-DSN-Informationen an einen Konfigurationsparameter namens pdo.dsn.aliasname übergeben, wobei aliasname der DSN-Alias ​​ist, der später dem Konstruktor bereitgestellt wird. Stellen Sie wie unten gezeigt eine Verbindung zum Oracle-Server her. Der für DSN in php.ini angegebene Alias ​​lautet oraclepdo:

【PDO】
pdo.dsn.oraclepdo = “OCI:dbname=//localhost:1521/mydb;chaset=UTF-8”;

Nach dem Neustart des Apaceh-Servers können Sie die PDO-Konstruktionsmethode im PHP-Programm aufrufen Alias ​​in einem Parameter, wie unten gezeigt:

<?php
try{
    $dbh = new PDO(&#39;oraclepdo&#39;,&#39;scott&#39;,&#39;tiger&#39;);//使用php.ini文件中的oraclepdo 别名
}catch(PDOException $e){
    echo &#39;连接失败:&#39;.$e->getMessage();
}
?>

4. PDO- und verbindungsbezogene Optionen

PDO-Objekt erstellen, es gibt Einige Optionen im Zusammenhang mit der Datenbankverbindung. Sie können die erforderlichen Optionen in einem Array an den vierten Parameter „driver_opts“ des Konstruktors übergeben, um zusätzliche Optimierungsparameter an PDO oder den zugrunde liegenden Treiber zu übergeben. Einige häufige Verwendungsoptionen sind in der Tabelle aufgeführt:

选项名 描述
PDO::ATTR_AUTOCOMMIT 确定PDO是否关闭自定提交功能,设置FALSE值时关闭
PDO::ATTR_CASE 强制PDO获取的表字段字符的大小转换,或远原样使用列信息
PDO::ATTR_ERRMODE 设置错误处理的模式
PDO::ATTR_PERSISTENT 确定连接是否为持久连接,默认值为FALSE
PDO::ATTR_ORACCLE_NULLS 将返回的空字符串转换为SQL的NULL
PDO::ATTR_PREFETCH 设置应用程序提前获取的数据大小,以K字节单位
PDO::ATTR_TIMEOUT 设置超市之前等待的时间(秒数)
PDO::ATTR_SERVER_INFO 包含与数据库特有的服务器信息
PDO::ATTR_SERVER_VERSION 包含与数据库服务器版本号有关的信息
PDO::ATTR_CLIENT_VERSION 包含与数据库客户端版本号有关的信息
PDO::ATTR_CONNECTION_STATUS 包含数据库特有的与连接状态有关的信息

设置选项名为下表组成的关联数组,作为驱动程序特定的连接选项,传递给PDO构造方法的第四各参数中,在下面的实例中使用连接选项创建持久连接,持久连接的好处是能够避免在每个页面执行到打开和关闭数据库服务器连接,速度更快,如 MySQL数据库的一个进程创建了两个连接,PHP则会把原有连接与新的连接合并共享为一个连接,代码如下:

<?php
$opt = array(PDO::ATTR_PERSISTENT =>true);
try{
    $dbh = new PDO(&#39;mysql:host=localhost;dbname=test&#39;,&#39;dbuser&#39;,&#39;password&#39;,$opt); //使用$opt参数
}catch(PDOException $e){
    echo &#39;连接失败:&#39;.$e->getMessage();
}
?>

以上就是关于以多种方式调用构造方法创建PDO对象的所有内容,小伙伴们都理解了吗?可以在自己本地试一试!

Das obige ist der detaillierte Inhalt vonRufen Sie Konstruktoren auf verschiedene Arten auf, um PDO-Objekte zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn