Maison > base de données > tutoriel mysql > Appelez les constructeurs de différentes manières pour créer des objets PDO

Appelez les constructeurs de différentes manières pour créer des objets PDO

黄舟
Libérer: 2017-05-20 17:19:01
original
1729 Les gens l'ont consulté

Le constructeur peut être appelé de plusieurs manières pour créer un objet PDO

Le constructeur peut être appelé de différentes manières pour créer un objet PDO. Ce qui suit consiste à connecter MySQL et Oracle. En prenant le serveur comme exemple, nous présenterons les différentes méthodes d'appel de la méthode de construction.

1. Intégrer les paramètres dans le constructeur

Dans l'exemple suivant de connexion au serveur Oracle, chargez le pilote OCI dans la chaîne DSN. Le programme spécifie également deux paramètres facultatifs : le premier est le nom de la base de données et le second est le jeu de caractères. Utilisez un jeu de caractères spécifique pour vous connecter à une base de données spécifique. Si aucune information n'est spécifiée, la base de données par défaut sera utilisée. Le code est le suivant :

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

OCI:dbname=accounts indique à PDO qu'il doit utiliser le pilote OCI et que la base de données "accounts" doit être utilisée. Pour le pilote MySQL, tout ce qui se trouve après les premiers deux-points sera utilisé comme DSN MySQL. L'affichage lors de la connexion au serveur MySQL est le suivant :

<?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();
}
?>
Copier après la connexion

D'autres pilotes analyseront également son DSN de différentes manières. Si le pilote ne peut pas être chargé ou si un échec de connexion se produit, une exception PDOException sera levée. . Pour que vous puissiez décider de la meilleure façon de gérer l’échec. L'omission de la structure de contrôle try...catch n'a aucun avantage ; si la gestion des exceptions n'est pas définie à un niveau supérieur dans l'application, le script se terminera si la connexion à la base de données ne peut pas être établie.

2. Stocker les paramètres dans un fichier

Lors de la création d'un objet PDO, vous pouvez placer la chaîne DSN dans un autre fichier d'emplacement local ou distant , et référencez ce fichier dans le constructeur, comme indiqué ci-dessous :

<?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();
}
?>
Copier après la connexion

Tant que vous modifiez le pilote DSN dans le fichier /usr/localhost/dbconnect, vous pouvez basculer entre plusieurs systèmes de base de données, mais faites assurez-vous que le fichier appartient à l'utilisateur responsable de l'exécution du script PHP et que cet utilisateur dispose des autorisations nécessaires.

3. Référencez le fichier php.ini

Vous pouvez également conserver les informations DSN dans le fichier de configuration du serveur PHP, à condition que c'est dans le fichier php.ini que les informations DSN de Zhongba sont transmises à un paramètre de configuration nommé pdo.dsn.aliasname, où aliasname est l'alias DSN qui sera fourni ultérieurement au constructeur. Connectez-vous au serveur Oracle comme indiqué ci-dessous. L'alias spécifié pour DSN dans php.ini est oraclepdo :

【PDO】
pdo.dsn.oraclepdo = “OCI:dbname=//localhost:1521/mydb;chaset=UTF-8”;
Copier après la connexion

Après avoir redémarré le serveur Apaceh, vous pouvez appeler la méthode de construction PDO dans le programme php. alias dans un paramètre, comme suit :

<?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();
}
?>
Copier après la connexion

4. Options PDO et liées à la connexion

Créer un objet PDO, il y en a options liées à la connexion à la base de données. Vous pouvez transmettre les options nécessaires dans un tableau au quatrième paramètre driver_opts du constructeur pour transmettre des paramètres de réglage supplémentaires à PDO ou au pilote sous-jacent. Certaines options d'utilisation courantes sont présentées dans le tableau :

选项名描述
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();
}
?>
Copier après la connexion

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal