Maison  >  Article  >  développement back-end  >  Explication détaillée de la classe PDO en PHP5

Explication détaillée de la classe PDO en PHP5

墨辰丷
墨辰丷original
2018-05-19 09:14:171601parcourir

Cet article présente principalement l'explication détaillée de la classe PDO en PHP5. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

weightQu'est-ce que l'AOP ? L'extension POD (PHP Data Object) a été ajoutée en PHP5. En PHP6, PDO sera utilisé par défaut pour se connecter à la base de données. Toutes les extensions non-PDO seront supprimées de l'extension en PHP6. Cette extension fournit la classe PDO intégrée à PHP pour accéder à la base de données. Différentes bases de données utilisent le même nom de méthode pour résoudre le problème des connexions de base de données incohérentes. Je l'ai configuré pour le développement sous Windows. ■L'objectif de PDO

Fournir une API légère, claire et pratique
Unifier les fonctionnalités communes des différentes bibliothèques SGBDR, mais n'exclut pas des fonctionnalités plus avancées.
Fournit en option un plus grand degré d'abstraction/compatibilité via des scripts PHP.

Caractéristiques du PDO :

Performance. PDO a appris dès le début les succès et les échecs de l'extension des bases de données existantes. Le code de PDO étant tout nouveau, nous avons la possibilité de repenser entièrement les performances pour tirer parti des dernières fonctionnalités de PHP 5.
Capacité. PDO est conçu pour fournir des fonctionnalités de base de données communes comme base tout en offrant un accès facile aux fonctionnalités uniques d'un SGBDR.
Simple. PDO est conçu pour vous faciliter l’utilisation des bases de données. L'API ne force pas son chemin dans votre code et indique clairement ce que fait chaque appel de fonction.
Extensible au moment de l'exécution. L'extension PDO est modulaire, vous permettant de charger les pilotes pour votre backend de base de données au moment de l'exécution sans avoir à recompiler ou réinstaller l'intégralité du programme PHP. Par exemple, l'extension PDO_OCI implémente l'API de la base de données Oracle au lieu de l'extension PDO. Il existe également des pilotes pour MySQL, PostgreSQL, ODBC et Firebird, et d'autres sont en développement. [separator]


■Installation de PDO
Voici l'extension PDO pour le développement sous WINDOWS Si vous souhaitez l'installer et la configurer sous Linux, veuillez chercher ailleurs.
Exigences de version : php5.1 et les versions ultérieures sont déjà incluses dans le package ; php5.0.x doit être téléchargé depuis pecl.php.net et placé dans votre bibliothèque d'extensions, qui est l'extension du dossier dans lequel PHP se trouve le dossier ; le manuel indique que les versions antérieures à 5.0 ne peuvent pas exécuter les extensions PDO. Configuration :
Modifiez votre fichier de configuration php.ini pour qu'il prenne en charge pdo (Si vous ne comprenez pas php.ini, précisez d'abord que vous devez modifier le php.ini affiché lors de l'appel de votre fonction phpinfo(). . ) Supprimez le point-virgule devant extension=php_pdo.dll Le point-virgule est le symbole de commentaire du fichier de configuration php. Cette extension est nécessaire. Plus bas se trouvent
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll correspondant à chaque extension Les bases de données sont :
Nom du pilote Bases de données prises en charge
PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD Firebird/Interbase 6
PDO_INFORMIX IBM Informix Dynamic Server
PDO_MYSQL MySQL 3.x/4.x
PDO_OCI Oracle Call Interface
PDO_ODBC ODBC v3 (IBM DB2, unixODBC et win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 et SQLite 2
Quelle base de données vous souhaitez utiliser, ajoutez simplement l'extension correspondante Juste supprimez le symbole de commentaire ";" devant.

weightUtilisez PDO
Je suppose ici que vous avez installé mysql. Sinon, veuillez d'abord trouver un moyen de l'installer. Le mien est mysql5.0.22, et le passant dans le noir utilise MySQL 4.0.26. . Également disponible.
★Connexion à la base de données :
Nous utilisons l'exemple suivant pour analyser la connexion PDO à la base de données,


$dbms='mysql' //Type de base de données; oracle En utilisant ODI, pour les développeurs qui utilisent des bases de données différentes, il leur suffit de changer cela, et il n'est pas nécessaire de mémoriser autant de fonctions
$host='localhost'; //Nom d'hôte de la base de données
$dbName=' test' ; //Base de données utilisée
$user='root'; //Nom d'utilisateur de connexion à la base de données
$pass='' //Mot de passe correspondant
$dsn="$dbms:host=$host ;dbname=$dbName";
//

try {
$dbh = new PDO($dsn, $user, $pass); //Initialiser un objet PDO signifie créer une connexion à une base de données object $dbh
echo "Connexion réussie
";
/*Vous pouvez également effectuer une opération de recherche

foreach ($dbh->query('Select * from FOO' ) comme $row) {
                                                                            print_r($row);
} catch (PDOException $e) {
mourir ("Erreur ! : " . $e->getMessage() . "
");
}
// Par défaut, il ne s'agit pas d'une longue connexion. Si vous avez besoin d'une longue connexion à la base de données, vous devez ajouter un paramètre à la fin : array(PDO:: ATTR_PERSISTENT => true) devient comme ceci :
$db = new PDO($dsn, $user, $pass , array(PDO::ATTR_PERSISTENT => true));

?>


★Requête de base de données :
Nous avons déjà effectué une requête ci-dessus, nous pouvons également utiliser la requête suivante :
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); //Définir les attributs
$rs = $db->query("Select * FROM foo");
$rs-> ;setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>


À cause de ce qui précède Utilisez la méthode setAttribute(), mettez ces deux paramètres et forcez le nom du champ à être mis en majuscule. Voici les paramètres de PDO::setAttribute() : PDO::ATTR_CASE : Forcer le nom de la colonne à devenir un format, comme détaillé ci-dessous (deuxième paramètre) :

PDO::CASE_LOWER : Forcer le nom de la colonne Le nom est en minuscules.

PDO::CASE_NATURAL : Le nom de la colonne est dans la forme originale

PDO::CASE_UPPER : Le nom de la colonne doit être obligatoirement en majuscule.

PDO::ATTR_ERRMODE : astuce d'erreur.

PDO::ERRMODE_SILENT : n'affiche pas les informations d'erreur, uniquement le code d'erreur.

PDO::ERRMODE_WARNING : affiche une erreur d'avertissement.

PDO::ERRMODE_EXCEPTION : Throw Une exception s'est produite.

PDO::ATTR_ORACLE_NULLS (valable non seulement pour ORACLE, mais aussi pour d'autres bases de données) : ) Spécifiez la valeur correspondante en php pour la valeur NULL renvoyée par la base de données.

PDO::NULL_NATURAL : inchangé.

PDO::NULL_EMPTY_STRING : la chaîne vide est convertie en NULL.

PDO::NULL_TO_STRING : NULL est converti en chaîne vide.

PDO::ATTR_STRINGIFY_FETCHES : convertit les valeurs numériques en chaînes lors de la récupération. Nécessite bool.

PDO::ATTR_STATEMENT_CLASS : définit la classe d'instructions fournie par l'utilisateur dérivée de PDOStatement. Ne peut pas être utilisée avec persistant. Instances PDO. Nécessite un tableau (string classname, array (mixed constructor_args)).

PDO::ATTR_AUTOCOMMIT (disponible dans OCI, Firebird et MySQL) : s'il faut valider automatiquement chaque instruction.

PDO : :MYSQL_ATTR_USE_BUFFERED_QUERY (disponible dans MySQL) : utilisez des requêtes mises en mémoire tampon.

$rs->setFetchMode(PDO::FETCH_ASSOC); dans l'exemple est PDOStatement::setFetchMode(), une déclaration du type de retour.
sont les suivants :
PDO::FETCH_ASSOC -- Forme de tableau associatif
PDO::FETCH_NUM -- Forme de tableau d'index numérique
PDO::FETCH_BOTH -- Les deux formes de tableau sont disponibles, ce qui manque Provincial
PDO::FETCH_OBJ - sous la forme d'un objet, similaire au précédent mysql_fetch_object()

Pour plus de déclarations de type de retour (PDOStatement::method name), voir le manuel.

★Insérer, mettre à jour, supprimer des données,

$db->exec("Delete FROM `xxxx_menu` which mid=43");


Simple Pour résumer les opérations ci-dessus :

Les opérations de requête sont principalement PDO::query(), PDO::exec(), PDO::prepare().
PDO::query() est principalement utilisé pour les opérations qui renvoient des résultats enregistrés, en particulier les opérations de sélection.
PDO::exec() est principalement utilisé pour les opérations qui ne renvoient pas de jeu de résultats, telles que Insertion, Mise à jour. , et Supprimer Pour les autres opérations, le résultat renvoyé est le nombre de colonnes affectées par l'opération en cours.
PDO::prepare() est principalement une opération de prétraitement. Vous devez utiliser $rs->execute() pour exécuter les instructions SQL dans le prétraitement. Cette méthode peut lier des paramètres et est assez puissante. simplement dans cet article. Si vous comprenez, vous pouvez vous référer au manuel et à d'autres documents.

Les principales opérations pour obtenir l'ensemble de résultats sont : PDOStatement::fetchColumn(), PDOStatement::fetch(), PDOStatement::fetchALL().
PDOStatement::fetchColumn() est un champ du premier enregistrement spécifié dans le résultat de la récupération. La valeur par défaut est le premier champ.
PDOStatement::fetch() est utilisé pour obtenir un enregistrement.
PDOStatement::fetchAll() est utilisé pour obtenir tous les enregistrements en un seul. Pour obtenir les résultats, vous pouvez définir le type de jeu de résultats requis via. PDOStatement :: setFetchMode.

Il existe deux autres opérations périphériques, l'une est PDO::lastInsertId() et PDOStatement::rowCount(). PDO::lastInsertId() renvoie la dernière opération d'insertion et le type de colonne de clé primaire est le dernier ID d'auto-incrémentation.
PDOStatement::rowCount() est principalement utilisé pour l'ensemble de résultats affecté par les opérations de suppression, d'insertion et de mise à jour de PDO::query() et PDO::prepare(). Il n'est pas valide pour PDO::exec. () et opération de sélection.

Recommandations associées :

La raison pour laquelle la méthode PDO peut empêcher l'injection dans MySQL

Framework ThinkPHP basé sur un exemple d'opération de base de données de connexion à la méthode PDO

Exemple d'opération de traitement de transaction PDO en PHP

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!

Déclaration:
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