さまざまな方法でコンストラクターを呼び出して PDO オブジェクトを作成する

黄舟
リリース: 2017-05-20 17:19:01
オリジナル
1709 人が閲覧しました

さまざまな方法でコンストラクター メソッドを呼び出して PDO オブジェクトを作成します

コンストラクター メソッドをさまざまな方法で呼び出して PDO オブジェクトを作成できます。以下では、例として MySQL サーバーと Oracle サーバーを接続します。コンストラクターメソッドのさまざまな呼び出し方法を紹介します。

1. コンストラクターにパラメーターを埋め込みます

Oracle サーバーに接続する次の例では、DSN 文字列に OCI ドライバーをロードし、2 つのオプションのパラメーターを指定します。1 つ目はデータベース名、2 つ目は文字セット。特定のデータベースに接続するには、特定の文字セットを使用します。情報が指定されていない場合は、デフォルトのデータベースが使用されます。コードは次のとおりです。

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

OCI:dbname=accounts は、OCI ドライバーを使用する必要があること、および「アカウント」データベースを使用する必要があることを PDO に伝えます。 MySQL ドライバーの場合、最初のコロン以降のすべてが MySQL DSN として使用されます。 MySQL サーバーへの接続は次のようになります:

<?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();
}
?>
ログイン後にコピー

他のドライバーもその DSN をさまざまな方法で解析します。ドライバーをロードできない場合、または接続エラーが発生した場合は、最適な処理方法を決定できるように PDOException がスローされます。故障をきちんと。 try...catch 制御構造を省略してもメリットはありません。例外処理がアプリケーションの上位レベルで定義されていない場合、データベース接続を確立できないとスクリプトは終了します。

2. パラメーターをファイルに保存します

PDO オブジェクトを作成するとき、以下に示すように、DSN 文字列を別のローカルまたはリモート ファイルに配置し、コンストラクターでこのファイルを参照できます。ファイル /usr/localhost/dbconnect 内の DSN ドライバーを変更することで複数のデータベース システムを切り替えることができますが、そのファイルが PHP スクリプトの実行を担当するユーザーによって所有されており、このユーザーが必要な権限を持っていることを確認してください。

3. php.ini ファイルを参照します PHP サーバーの設定ファイルで DSN 情報を維持することもできます。php 内の pdo.dsn.aliasname という名前の設定に DSN 情報を追加するだけです。 ini ファイル。ここで、aliasname は、後でコンストラクターに提供される DSN エイリアスです。以下に示すように、php.ini で DSN に指定されたエイリアスは oraclepdo です。

<?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();
}
?>
ログイン後にコピー

Apaceh サーバーを再起動した後、PHP プログラム Alias で PDO 構築メソッドを呼び出すときに、これを最初のパラメーターで使用できます。以下に示すように:

【PDO】
pdo.dsn.oraclepdo = “OCI:dbname=//localhost:1521/mydb;chaset=UTF-8”;
ログイン後にコピー

IV. PDO 接続関連のオプション PDO オブジェクトを作成するときに、必要なオプションを配列に渡してコンストラクターに渡すことができます。 4 番目のパラメーター driver_opts は、追加の調整パラメーターを PDO または基礎となるドライバーに渡すために使用されます。よく使用される使用オプションは次のとおりです:

选项名描述
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对象的所有内容,小伙伴们都理解了吗?可以在自己本地试一试!

以上がさまざまな方法でコンストラクターを呼び出して PDO オブジェクトを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート