Connection à mysql avec mysqli en programmation orientée objet (POO)
Exemple de fichier de configuration php « config_local.php », « config_svr01 » ou « config_svr02″…
<?php
define(‘SVR_IP’, ‘192.168.1.10’);
define(‘BDD’, ‘bdd_01’);
define(‘BDD_PORT’, 3306);
define(‘UTILISATEUR’, ‘utilisateur_01’);
define(‘MOTDEPASSE’, ‘mdp_01’);
define(‘CHRSET’, ‘utf8mb4’);
?>
Ce fichier définit le serveur qui héberge la base de données et les paramètres d’accès à la base de données.
Exemple de fichier de sélection du serveur php « fichier_de_connexion.php ».
Il est possible de combiner les informations de configuration et de connexion dans le même fichier…
<?php
$SVR_ERR = « »;
switch ($_SERVER[‘HTTP_HOST’] == ‘localhost’ ||
$_SERVER[‘HTTP_HOST’] == ‘127.0.0.1’) { // 1
case 1:
include_once(‘conn_svr_local.php’);
ini_set(‘display_errors’, 1);
error_reporting(E_ALL);
case 0:
$SVR_ERR = « erreur de connexion au serveur »;
}
switch ($_SERVER[‘HTTP_HOST’] == ‘XX.XX.XX.01’ {
case 1:
include_once(‘config_svr01.php’);
ini_set(‘display_errors’, 0);
error_reporting(0);
case 0:
$SVR_ERR = « erreur de connexion au serveur »;
}
switch ($_SERVER[‘HTTP_HOST’] == ‘XX.XX.XX.02’ {
case 1:
include_once(‘config_svr02.php’);
ini_set(‘display_errors’, 0);
error_reporting(0);
case 0:
$SVR_ERR = « erreur de connexion au serveur »;
}
?>
Ce fichier sélectionne le fichier de paramètre selon le mode développement en local ou utilisation en production
Le niveau de reporting des erreurs est également configuré dans ce fichier. Sur un serveur publique, les erreurs sont masquées et sur un serveur de développement en local, les erreurs sont affichées.
Les erreurs du serveur de base de données sont transférées en erreur php et affichées avec le niveau d’affichage d’erreur de php.
(1) utilisation d’une déclaration switch pour forcer une seule évaluation des conditions. La condition IF évalue chaque condition et php peut générer une erreur de type warning car la première condition créee les variables de connexion. Du fait de cette évaluation, une erreur peut être générée car une variable définie avec DEFINE ne peut pas être déclarée une nouvelle fois.
Exemple de fichier de connexion php en poo
<?php
include_once(‘fichier_de_connexion.php’);// 1
$conn = new mysqli(SVR_IP, UTILISATEUR, MOTDEPASSE); // 2
if ($conn -> connect_errno) { // 3
echo « <p>Erreur de connection paramètres base de données:
( » . $conn -> connect_error. « )</p> »;
}else {
echo « <p>Paramètres de connection à la base de données valides</p> »;
}
$conn -> close(); // 4
?>
1Sélection du fichier de configuration
SVR_IP: Serveur hôte ou local (localhost)
UTILISATEUR: Utilisateur qui peut accéder à la base de données BDD
MOTDEPASSE: mot de passe de l’utilisateur
2 Création d’un objet ou d’une instance « mysqli » avec le mot clé « new » qui permet d’accéder aux propriétés et méthodes de la classe mysqli
3 Test de retour d’erreur avec la méthode « connect_error » de l’objet $conn « $conn -> connect_error »
4 Fermeture de la connexion avec la méthode de l’objet $conn « close() »
Ci-dessous, une autre version parmi les scripts de connexion mysqli en poo possible,
Exemple de connexion php en poo à une base de données mysql / mariadb (version 2)
<?php
include_once(‘fichier_de_connexion.php’);// 1
try {
$conn = new mysqli(SVR_IP, UTILISATEUR, MOTDEPASSE); // 2
$conn->set_charset(« utf8mb4 »); // 3
echo « <p>Paramètres de connection à la base de données valides</p> »;
}
catch(Exception $e) {
error_log($e->getMessage());// 4
exit(‘Error connecting to database ::: ‘ . $e->getMessage());
}
$conn -> close(); // 5
?>
1 sélection du fichier de configuration
SVR_IP: serveur hôte ou local (localhost)
UTILISATEUR: utilisateur qui peut accéder à la base de données BDD
MOTDEPASSE: mot de passe de l’utilisateur
Spécifier la base de données n’est pas nécessaire avec mysqli
2 Connexion à la base de données avec un objet mysqli instancié
3 Encodage des caractères, il faut s’assurer que cet encodage est compatible avec celui de la table dans la base de données
4 Copie des erreurs de connection dans les fichiers de log du serveur
5 Fermeture de la connexion avec la méthode de l’objet $conn « close() »
Les différents scripts de connexion peuvent être développés pour être plus complet ou rester simples dans un mode de développement modulaire.
La configuration au niveau de la sécurité de la connexion s’effectue principalement au niveau du serveur et de la base de données. Sur un accès publique, il est nécessaire d’utiliser un mot de passe avec un certain degré de complexité.
Pour les hébergements sur des serveurs mutualisés, il peut y avoir des éléments de sécurité supplémentaires du fait que la base de données se trouve sur un serveur avec des utilisateurs qui peuvent volontairement ou involontairement accéder aux données ou ouvrir des accès sur le web public.
Pour les utilisateurs d’un site web avec une base de données, mysqli permet de sécuriser l’utilisation. Les requêtes préparées dans l’accès aux données offrent une sécurité supplémentaire.