mirror of
https://github.com/php/doc-fr.git
synced 2026-03-23 22:52:18 +01:00
Élisions manquantes (de/le/que + voyelle), accords genre/nombre, conjugaisons incorrectes (on + 2e personne), typos, accents manquants, contractions (à le → au, de les → des), c.-à-d., etc.
402 lines
13 KiB
XML
402 lines
13 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: e8ac70bf549a723cb36465667a6109d9933b8619 Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
|
|
<chapter xml:id="mysqli.overview" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
|
|
<title>Introduction</title>
|
|
|
|
<para>
|
|
Cette section fournit des informations sur les solutions qui
|
|
sont disponibles quand on développe une application PHP qui a
|
|
besoin de s'interfacer avec une base de données MySQL.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis role="bold">Qu'est-ce qu'une API?</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
Une Interface de programmation d'application, une
|
|
<literal>Application Programming Interface</literal>, ou encore API,
|
|
définit les classes, méthodes, fonctions et variables dont une
|
|
application va faire usage pour exécuter différentes tâches. Dans le cas
|
|
des applications PHP, les communications avec une base de données
|
|
se font généralement par une API qui est exposée dans une extension PHP.
|
|
</para>
|
|
|
|
<para>
|
|
Les API peuvent être procédurales ou orientées objet. Avec une API procédurale,
|
|
il est possible d'appeler les fonctions pour exécuter des commandes; avec une
|
|
API orientée objet, il faut créer des objets et appeler les méthodes
|
|
de ces objets. Des deux, c'est la dernière qui est généralement préférée,
|
|
car elle est plus moderne et conduit à du code plus organisé.
|
|
</para>
|
|
|
|
<para>
|
|
Lors de l'écriture d'applications PHP qui doivent se connecter à MySQL,
|
|
il y a plusieurs API disponibles. Ce document présente ces API, et
|
|
donne les informations pour choisir la meilleure solution pour
|
|
l'application.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis role="bold">Qu'est-ce qu'un connecteur?</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
Dans la documentation MySQL, le terme <emphasis>connector</emphasis>
|
|
fait référence à un logiciel qui permet à une application de se connecter
|
|
à une base de données MySQL. MySQL fournit des connecteurs pour toute une
|
|
collection de langages, y compris PHP.
|
|
</para>
|
|
|
|
<para>
|
|
Si l'application PHP a besoin de communiquer avec un serveur de
|
|
base de données, il faut écrire du code pour pouvoir se connecter,
|
|
envoyer des requêtes au serveur, etc. Un logiciel est nécessaire pour
|
|
assurer l'interface que PHP va utiliser et gérer les communications
|
|
entre l'application et le serveur de base de données : éventuellement,
|
|
des bibliothèques intermédiaires sont nécessaires. Ces logiciels sont appelés
|
|
de manière générique des connecteurs, car ils permettent de se
|
|
<emphasis>connecter</emphasis> à un serveur de base de données.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis role="bold">Qu'est-ce qu'un pilote ?</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
Un pilote est un logiciel qui est conçu pour communiquer avec
|
|
un type particulier de base de données. Un pilote peut aussi être
|
|
appelé une bibliothèque, telle que la
|
|
<literal>MySQL Client Library</literal> ou le
|
|
MySQL Native Driver. Ces bibliothèques implémentent le protocole
|
|
de bas niveau pour communiquer avec un serveur MySQL.
|
|
</para>
|
|
|
|
<para>
|
|
Par exemple, la couche d'abstraction de base de données
|
|
<link linkend="mysqli.overview.pdo">PHP Data Objects (PDO)</link> utilise
|
|
un ou plusieurs pilotes de base de données. Un de ces pilotes est le
|
|
pilote PDO MYSQL, qui permet de faire l'interface avec MySQL.
|
|
</para>
|
|
|
|
<para>
|
|
Parfois, les développeurs utilisent les termes de connecteur et de pilote
|
|
de manière interchangeable, et cela peut être confus. Dans les
|
|
documentations MySQL, le terme de <quote>pilote</quote> est réservé
|
|
aux logiciels qui sont la face spécifique avec la base de données du
|
|
paquet.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis role="bold">Qu'est-ce qu'une extension?</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
Dans la documentation PHP, on rencontrera un autre terme :
|
|
<emphasis>extension</emphasis>. Le code PHP est constitué d'un cœur,
|
|
avec des extensions optionnelles. Les extensions liées à MySQL de PHP,
|
|
telles que l'extension <literal>mysqli</literal> et l'extension de pilote
|
|
PDO MySQL, sont implémentées en utilisant le framework d'extension PHP.
|
|
</para>
|
|
|
|
<para>
|
|
Une extension expose typiquement une API à un développeur PHP,
|
|
pour lui permettre de faciliter sa programmation. Cependant,
|
|
certaines extensions qui utilisent le framework PHP n'exposent
|
|
pas d'API au développeur PHP.
|
|
</para>
|
|
|
|
<para>
|
|
L'extension de pilote PDO MySQL, par exemple, n'expose pas d'API au
|
|
développeur PHP, mais fournit une interface à la couche PDO.
|
|
</para>
|
|
|
|
<para>
|
|
Les termes API et extension ne devraient pas signifier la même chose,
|
|
car une extension PHP ne fournit pas d'API particulière au développeur PHP.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis role="bold">Quelles sont les API PHP pour MySQL ?</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
Il y a deux API principales pour se connecter à MySQL :
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
L'extension mysqli
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
PHP Data Objects (PDO)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Chacune a ses avantages et ses inconvénients. Les sections suivantes
|
|
tendent à donner une présentation rapide de chaque API.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis role="bold">Qu'est-ce que l'extension mysqli de PHP ?</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
L'extension <literal>mysqli</literal>, ou, comme elle est parfois appelée,
|
|
l'extension MySQL <emphasis>améliorée</emphasis> (i pour <literal>improved</literal>
|
|
en anglais), a été développée pour tirer parti des nouvelles fonctionnalités
|
|
des systèmes MySQL version 4.1.3 et plus récent. L'extension
|
|
<literal>mysqli</literal> est incluse dans PHP depuis les versions 5.
|
|
</para>
|
|
|
|
<para>
|
|
L'extension <literal>mysqli</literal> a un grand nombre d'avantages
|
|
et d'améliorations par rapport à l'extension <literal>mysql</literal> :
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Interface orientée objet
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support des commandes préparées
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support des commandes multiples
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support des transactions
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Capacités de débogage avancées
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
En plus d'une interface orientée objet, l'extension propose aussi
|
|
une interface procédurale.
|
|
</para>
|
|
|
|
<para>
|
|
L'extension <literal>mysqli</literal> est compilée avec le framework
|
|
PHP, et son code source est rangé dans le dossier <filename>ext/mysqli</filename>.
|
|
</para>
|
|
|
|
<para>
|
|
Pour plus d'informations sur l'extension <literal>mysqli</literal>,
|
|
voir <xref linkend="book.mysqli"/>.
|
|
</para>
|
|
|
|
<para xml:id="mysqli.overview.pdo">
|
|
<emphasis role="bold">Qu'est-ce que l'extension PDO de PHP ?</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
<literal>PHP Data Objects</literal>, ou PDO, est une couche d'abstraction
|
|
de base de données, spécifique à PHP. PDO propose une API cohérente pour les
|
|
applications PHP, indépendamment du type de base de données avec laquelle
|
|
on travaille. En théorie, lors de l'utilisation de PDO, il est possible de
|
|
changer de base de données, disons de Firebird à MySQL, et ne faire que
|
|
des changements mineurs au code PHP.
|
|
</para>
|
|
|
|
<para>
|
|
D'autres exemples de couches d'abstraction de base de données incluent
|
|
JDBC pour Java et DBI pour Perl.
|
|
</para>
|
|
|
|
<para>
|
|
Si PDO a ses avantages, comme une API propre, simple et portable,
|
|
ses inconvénients principaux sont qu'elle ne permet pas d'utiliser
|
|
toutes les fonctionnalités avancées des dernières versions de MySQL.
|
|
Par exemple, PDO ne permet pas de faire des requêtes multiples.
|
|
</para>
|
|
|
|
<para>
|
|
PDO est implémenté en utilisant le framework PHP, et son code source
|
|
est rangé dans le dossier <filename>ext/pdo</filename>.
|
|
</para>
|
|
|
|
<para>
|
|
Pour plus d'informations sur PDO, voir <xref linkend="book.pdo"/>.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis role="bold">Qu'est-ce que le pilote MySQL pour PDO ?</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
Le pilote PDO MYSQL n'est pas une API en tant que tel, au moins du
|
|
point de vue du développeur PHP. En fait, le pilote PDO MYSQL fait partie
|
|
de PDO, et fournit les fonctionnalités particulières à MySQL. Le
|
|
développeur appelle l'API PDO, mais PDO utilise le pilote PDO MYSQL
|
|
pour assurer les communications avec MySQL.
|
|
</para>
|
|
|
|
<para>
|
|
Le pilote PDO MYSQL fait partie de la grande famille des pilotes PDO.
|
|
Les autres pilotes disponibles assurent les communications avec
|
|
Firebird et PostgreSQL, entre autres.
|
|
</para>
|
|
|
|
<para>
|
|
Le pilote PDO MYSQL est implémenté avec le framework d'extension de PHP.
|
|
Son code source est situé dans le dossier <filename>ext/pdo_mysql</filename>.
|
|
Il n'expose aucune API au développeur PHP.
|
|
</para>
|
|
|
|
<para>
|
|
Pour plus de détails sur le pilote PDO de MySQL, voir
|
|
<xref linkend="ref.pdo-mysql"/>.
|
|
</para>
|
|
|
|
<para xml:id="mysqli.overview.mysqlnd">
|
|
<emphasis role="bold">Qu'est-ce que le pilote natif MySQL de PHP ?</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
Pour communiquer avec le serveur MySQL, l'extension
|
|
<literal>mysqli</literal> et le pilote
|
|
PDO MYSQL utilisent tous une bibliothèque bas niveau qui implémente
|
|
le protocole MySQL. Par le passé, la seule bibliothèque disponible
|
|
était la <literal>MySQL Client Library</literal>,
|
|
aussi appelée <literal>libmysqlclient</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
Cependant, l'interface présentée par <literal>libmysqlclient</literal> n'était
|
|
pas optimisée pour les communications avec PHP, et
|
|
<literal>libmysqlclient</literal> était conçue à l'origine en C, pour des
|
|
applications de même type. Pour cette raison, le pilote MySQL natif
|
|
<literal>mysqlnd</literal> a été développé comme une alternative à
|
|
<literal>libmysqlclient</literal> pour les applications PHP.
|
|
</para>
|
|
|
|
<para>
|
|
L'extension <literal>mysqli</literal> et le pilote MySQL natif peuvent
|
|
tous deux être configurés individuellement pour utiliser soit
|
|
<literal>libmysqlclient</literal> soit <literal>mysqlnd</literal>. Comme
|
|
<literal>mysqlnd</literal> a été conçu spécifiquement pour utiliser le système
|
|
PHP, il propose de nombreux avantages et améliorations par rapport à
|
|
<literal>libmysqlclient</literal>. On est vivement encouragés à en profiter.
|
|
</para>
|
|
|
|
<para>
|
|
Le MySQL Native Driver est implémenté sur la base du framework
|
|
d'extension PHP. Le code source est dans
|
|
<filename>ext/mysqlnd</filename>. Il n'expose aucune nouvelle API
|
|
au développeur PHP.
|
|
</para>
|
|
|
|
<!-- TODO
|
|
<para>
|
|
For further information on the MySQL Native Driver, see
|
|
<xref linkend="book.mysqlnd"/>.
|
|
</para>
|
|
-->
|
|
|
|
<para>
|
|
<emphasis role="bold">Comparaison des fonctionnalités</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
La table suivante compare les fonctionnalités des méthodes
|
|
principales pour se connecter à MySQL depuis PHP :
|
|
</para>
|
|
|
|
<table xml:id="mysqli.overview.option.comparison">
|
|
<title>Comparaison des options MySQL API pour PHP</title>
|
|
<tgroup cols="3">
|
|
<colspec colwidth="34*"/>
|
|
<colspec colwidth="33*"/>
|
|
<colspec colwidth="33*"/>
|
|
<thead>
|
|
<row>
|
|
<entry></entry>
|
|
<entry>Extension mysqli</entry>
|
|
<entry>PDO (avec le pilote PDO MySQL Driver et MySQL Native Driver)</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>Version d'introduction en PHP</entry>
|
|
<entry>5.0</entry>
|
|
<entry>5.0</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Statut de développement MySQL</entry>
|
|
<entry>Développement actif</entry>
|
|
<entry>Développement actif</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L'API supporte les jeux de caractères</entry>
|
|
<entry>Oui</entry>
|
|
<entry>Oui</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L'API supporte les commandes préparées</entry>
|
|
<entry>Oui</entry>
|
|
<entry>Oui</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L'API supporte les commandes préparées coté client</entry>
|
|
<entry>Non</entry>
|
|
<entry>Oui</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L'API supporte les procédures stockées</entry>
|
|
<entry>Oui</entry>
|
|
<entry>Oui</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L'API supporte les commandes multiples</entry>
|
|
<entry>Oui</entry>
|
|
<entry>La plupart</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Toutes les fonctionnalités MySQL 4.1 et plus récent</entry>
|
|
<entry>Oui</entry>
|
|
<entry>La plupart</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
<!--
|
|
<para>
|
|
<emphasis role="bold">Further information</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
The PHP distribution and documentation are available from the
|
|
<link xlink:href="&url.php;">PHP Web site</link>.
|
|
</para>
|
|
-->
|
|
</chapter>
|