L'extension POD a été ajoutée dans PHP5. Cette extension fournit la classe PDO intégrée de 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.
L'objectif de PDO est
de fournir une API légère, claire et pratique
Unifiez les fonctionnalités communes aux différentes bibliothèques SGBDR sans exclure les fonctionnalités plus avancées.
Fournit en option un plus grand degré d’abstraction/compatibilité via des scripts PHP.
Caractéristiques du PDO :
Performances. PDO a appris dès le début les succès et les échecs de la mise à l'échelle 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 remplacera l'extension PDO pour implémenter l'API de la base de données Oracle. Il existe également des pilotes pour MySQL, PostgreSQL, ODBC et Firebird, et d'autres sont en cours de développement. [séparateur]
Installer PDO
Ce que j'ai ici est une 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 le dossier ext du dossier où se trouve PHP. . ;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, découvrez-le d'abord. Vous devez modifier le php.ini affiché lors de l'appel de votre fonction phpinfo().) Changer extension= php_pdo Supprimez le point-virgule devant .dll Le point-virgule est le symbole de commentaire du fichier de configuration php. Cette extension est nécessaire. Il y a plus
;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
La base de données correspondant à chaque extension est :
Nom du pilote Bases de données prises en charge
PDO_DBLIB FreeTDS/Microsoft SQL Server/Sybase
PDO_FIREBIRD Firebird/Interbase 6
PDO_INFORMIX Serveur dynamique IBM Informix
PDO_MYSQL MySQL 3.x/4.x
Interface d'appel Oracle PDO_OCI
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, supprimez simplement le symbole de commentaire ";" avant l'extension correspondante.
Utilisation de l'AOP
Je suppose ici que vous avez installé MySQL. Sinon, trouvez d'abord un moyen de l'installer. Le mien est mysql5.0.22, et d'autres utilisateurs de MySQL 4.0.26 peuvent également l'utiliser.
Connexion à la base de données :
Nous utilisons l'exemple suivant pour analyser la base de données de connexion PDO,
<?php
$dbms='mysql'; //Oracle de type base de données utilise ODI Pour les développeurs utilisant différentes bases de données, tant que vous modifiez cela, vous n'avez pas besoin 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";
essayer {
$dbh = new PDO($dsn, $user, $pass); //Initialiser un objet PDO signifie créer l'objet de connexion à la base de données $dbh
echo "Connexion réussie<br/>";
/*Vous pouvez également effectuer une opération de recherche
foreach ($dbh->query('Select * from FOO') as $row) {
print_r($row); //Vous pouvez utiliser echo($GLOBAL);
}
*/
$dbh = nul ;
} catch (PDOException $e) {
die ("Erreur : " . $e->getMessage() . "<br/>");
}
//Par défaut, ce n'est pas 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).
$db = nouveau 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, et nous pouvons également utiliser la requête suivante :
<?php
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER //Définir les attributs);
$rs = $db->query("Sélectionner * FROM foo");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>
Parce que la méthode setAttribute() est utilisée dans ce qui précède, les deux paramètres sont mis pour forcer le nom du champ à être mis en majuscule. La liste suivante répertorie les paramètres de PDO::setAttribute() : PDO::ATTR_CASE : force les noms de colonnes à être dans un format, comme détaillé ci-dessous (deuxième paramètre) :
PDO::CASE_LOWER : force les noms de colonnes à être en minuscules.
PDO::CASE_NATURAL : les noms de colonnes sont dans leur forme originale
PDO::CASE_UPPER : force les noms de colonnes à être mis en majuscules.
PDO::ATTR_ERRMODE : message d'erreur.
PDO::ERRMODE_SILENT : n'affiche pas les informations d'erreur, uniquement le code d'erreur.
PDO::ERRMODE_WARNING : Afficher les erreurs d'avertissement.
PDO::ERRMODE_EXCEPTION : lève une exception.
PDO::ATTR_ORACLE_NULLS (valable non seulement pour ORACLE, mais aussi pour d'autres bases de données) : ) spécifie 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 une 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 des instances PDO persistantes. Nécessite un tableau (nom de classe de chaîne, tableau (constructeur_args mixtes)).
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.
Il y a les éléments suivants :
PDO::FETCH_ASSOC -- forme de tableau associatif
PDO::FETCH_NUM -- Forme de tableau d'index numérique
PDO::FETCH_BOTH -- Les deux sont disponibles sous forme de tableau, ce qui est la valeur par défaut
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), consultez le manuel.
insérer, mettre à jour, supprimer des données,
$db->exec("Delete FROM `xxxx_menu` which mid=43");
Résumez brièvement 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 Select.
PDO::exec() est principalement destiné aux opérations qui ne renvoient pas de jeu de résultats, telles que l'insertion, la mise à jour, la suppression et d'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 l'instruction SQL lors du prétraitement. Cette méthode peut lier des paramètres et est assez puissante. Elle ne peut pas être expliquée simplement dans cet article. . Tout le monde Vous pouvez vous référer aux manuels et autres documentations.
Les principales opérations pour obtenir le jeu 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() consiste à regrouper tous les jeux d'enregistrements en un seul. Pour obtenir les résultats, vous pouvez définir le type du jeu de résultats requis via PDOStatement::setFetchMode.
Il existe également deux opérations environnantes, 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 le jeu de résultats affecté par les opérations Supprimer, Insérer et Mettre à jour de PDO::query() et PDO::prepare(), et n'est pas valide pour la méthode PDO::exec() et Sélectionnez l'opération.