Votre site Web devra fort probablement accéder à une base de données pour définir sa structure (ex : ses menus, ses configurations) et son contenu (ex : le texte à afficher dans les pages Web, les données manipulées, les usagers ayant droit de se connecter).
Les deux principales extensions pour travailler avec MySQL dans un programme PHP sont mysqli et pdo (PHP Data Objects).
Nous allons travailler ici avec mysqli.
Attention : ne copiez pas tout de suite ce code dans votre programme. Une version plus complète vous est donnée plus bas, après les explications qui s'imposent.
// attention : ce code est incomplet. Voir plus bas...
$mysqli = new mysqli("adresse_serveur_mysql", "usager_mysql", "mot_de_passe_en_clair", "base_de_donnees");
...
$mysqli->close();
Sur un site en développement avec AMPPS, la connexion se fera comme suit :
// attention : ce code est incomplet. Voir plus bas...
$mysqli = new mysqli("127.0.0.1", "root", "mysql", "mabd");
...
$mysqli->close();
Le code d'usager et le mot de passe par défaut dépendent du système que vous utilisez.
Par exemple, avec AMPPS, c'est root avec le mot de passe mysql. Avec XAMPP ou avec Devilbox, c'est root avec un mot de passe à blanc.
La plupart des hébergeurs imposent un préfixe devant le nom de la base de données et devant le nom de l'usager MySQL.
Pour cette raison, si vous travaillez sur un site en ligne, la commande aura plutôt cette forme :
// attention : ce code est incomplet. Voir plus bas...
$mysqli = new mysqli("127.0.0.1", "unprefixe_toto", "tata", "unprefixe_mabd");
...
$mysqli->close();
Notez que certains hébergeurs (c'est plus rare) vous fournissent un URL à utiliser à la place de 127.0.0.1.
Il peut y avoir une foule de raisons qui empêchent une connexion, comme par exemple :
C'est pourquoi il importe de toujours vérifier si la connexion a fonctionné avant de poursuivre le traitement.
Depuis PHP 8, il faut travailler avec un bloc try... catch pour bien réagir en cas d'erreur de connexion.
try {
$mysqli = new mysqli("adresse_serveur_mysql", "usager_mysql", "mot_de_passe_en_clair", "base_de_donnees");
} catch (Exception $e) {
die('Échec lors de la connexion à la base de données.');
}
Remarquez :
Voici la syntaxe à utiliser si vous utilisez une version de PHP inférieure à 8.
@$mysqli = new mysqli("adresse_serveur_mysql", "usager_mysql", "mot_de_passe_en_clair", "base_de_donnees");
if ($mysqli->connect_errno) {
die("Échec lors de la connexion à la base de données");
}
Lorsqu'on travaille avec PHP 7.x, remarquez l'ajout du @ devant l'appel de mysqli. Il s'agit de l'opérateur de contrôle d'erreur. Il assure qu'en cas de problème, cette instruction ne générera pas l'affichage d'un message d'erreur peu importe les autres configurations.
Si une erreur est détectée, son code sera stocké dans $mysqli->connect_errno. Cette variable sera donc différente de 0, ce qui est évalué comme un vrai.
L'encodage des caractères doit être correctement configuré à différents endroits afin que les caractères accentués soient bien affichés.
Une des étapes importante consiste à dire à PHP quel est l'encodage utilisé par la base de données.
Par exemple, si votre base de données utilise un jeu de caractère en UTF8-mb4, il faut ajouter cette instruction :
$mysqli->set_charset("utf8mb4");
Voici un exemple avec des données concrètes.
Ce code devra être placé au tout début de la page Web, par exemple dans le fichier configuration.inc.
try {
$mysqli = new mysqli("127.0.0.1", "root", "mysql", "mabd");
} catch (Exception $e) {
die('Échec lors de la connexion à la base de données.');
}
$mysqli->set_charset("utf8mb4");
Cette fois, vous pouvez utiliser cette structure de code dans votre programme puisqu'elle offre les mécanismes de vérification et de sécurité appropriés et qu'elle configure l'encodage de la base de données.
Lorsque les opérations à effectuer dans la base de données sont terminées, il faut refermer la connexion.
Ceci peut être effectué au bas de la page Web ou encore encore dans un fichier qui sera chargé au bas de la page, par exemple nettoyage.inc.
if (isset($mysqli)) {
$mysqli->close();
}
Le if avant de refermer la connexion ajoute de la robustesse au code dans le cas où le branchement à la base de données n'est pas fait dans le même fichier que la fermeture de la connexion (ex : branchement dans configuration.inc et fermeture dans nettoyage.inc).
« Connexions ». PHP. http://www.php.net/manual/fr/mysqli.quickstart.connections.php
« Extension mysqli ». PHP. http://php.net/manual/fr/book.mysqli.php
« Choisir une API ». PHP. http://www.php.net/manual/fr/mysqlinfo.api.choosing.php
▼Publicité
Site fièrement hébergé chez A2 Hosting.