Utilisation des extensions PHP MySQL (mysqlnd, mysqli, PDO) dans ServBay
ServBay, puissant environnement de développement web local tout-en-un, simplifie grandement les interactions entre applications PHP et bases de données. Pour toutes les versions de PHP prises en charge, il installe et active par défaut les principales extensions MySQL : mysqlnd
, mysqli
et PDO_MySQL
. Vous pouvez donc immédiatement utiliser MySQL ou MariaDB dans vos projets PHP, sans aucune configuration manuelle.
Extensions PHP MySQL disponibles dans ServBay
ServBay intègre dans ses environnements PHP trois extensions MySQL majeures, assurant ainsi compatibilité et performance :
- Pilote natif MySQL (
mysqlnd
) : Pilote natif PHP servant de base àmysqli
etPDO_MySQL
, il gère la communication avec les serveurs MySQL/MariaDB et se distingue par ses performances et sa gestion efficace de la mémoire. - MySQLi (
mysqli
) : Extension améliorée pour MySQL offrant des interfaces objet et procédurale. Elle permet la connexion à MySQL/MariaDB et prend en charge des fonctionnalités avancées telles que les requêtes préparées, transactions, procédures stockées et requêtes multiples. - PDO MySQL (
PDO_MySQL
) : Le pilote MySQL pour PDO (PHP Data Objects). PDO fournit une couche d'abstraction unifiée pour l'accès aux bases de données, ce qui permet d'utiliser le même API pour de multiples systèmes (MySQL, MariaDB, PostgreSQL, SQLite, etc.) et facilite la portabilité du code.
Statut d’activation
Sous ServBay, les extensions mysqlnd
, mysqli
et PDO_MySQL
sont activées par défaut pour toutes les versions de PHP. Aucune action supplémentaire n'est requise pour les activer. ServBay configure automatiquement le php.ini
afin que vous puissiez les utiliser immédiatement dans votre code pour vous connecter à vos bases de données.
Détail des extensions PHP MySQL
Comprendre les différences entre ces trois extensions vous aidera à choisir la plus adaptée à votre projet :
Pilote natif MySQL (
mysqlnd
)- Rôle principal :
mysqlnd
est un pilote natif écrit en C, servant de couche de communication entre PHP et les serveurs MySQL/MariaDB. - Caractéristiques : Depuis PHP 5.3,
mysqlnd
est la bibliothèque de base sous-jacente utilisée parmysqli
etPDO_MySQL
. Il est intégré nativement à PHP et ne nécessite plus de liaison avec la bibliothèque cliente externe MySQL (libmysqlclient
). - Points forts : Par rapport à l’ancienne
libmysqlclient
,mysqlnd
offre en général de meilleures performances, une gestion mémoire plus efficace, le support des requêtes asynchrones, des connexions persistantes optimisées et expose une API plugins riche. En général, vous interagissez avec ses bénéfices viamysqli
ouPDO
, pas directement.
- Rôle principal :
MySQLi (
mysqli
)- Rôle principal : Extension conçue pour MySQL (version 4.1.3 et plus) et MariaDB.
- Caractéristiques : Propose à la fois une interface orientée objet et une interface procédurale. Supporte les requêtes préparées (protection efficace contre les injections SQL), la gestion des transactions, les procédures stockées, et l’exécution de requêtes multiples.
- Points forts : Riche en fonctionnalités et optimisée pour MySQL/MariaDB. Si votre projet ne concerne que ces bases et requiert des fonctions spécifiques avancées,
mysqli
est un choix robuste et performant.
PDO MySQL (
PDO_MySQL
)- Rôle principal : PHP Data Objects (PDO) fournit une interface légère et uniforme pour accéder à différents types de bases de données ;
PDO_MySQL
est son pilote spécifique MySQL/MariaDB. - Caractéristiques : Permet d’accéder à la BDD à travers une API unifiée (
PDO
,PDOStatement
). Implique l’utilisation obligatoire des requêtes préparées (prepare()
etexecute()
), ce qui est une bonne pratique pour la sécurité. Prise en charge de la gestion transactionnelle. - Points forts : Portabilité : le principal atout de PDO. Si vous ou vos clients envisagez de migrer vers d'autres systèmes (PostgreSQL, SQLite, etc.), PDO minimise les changements dans le code. L'interface orientée objet améliore la clarté et la sécurité du code ; pour les nouveaux projets, PDO est généralement recommandé.
- Rôle principal : PHP Data Objects (PDO) fournit une interface légère et uniforme pour accéder à différents types de bases de données ;
Exemples de code PHP : connexion et manipulation de base de données
Voici comment utiliser mysqli
et PDO
pour se connecter à une base de données (MariaDB ou MySQL) sous ServBay et y réaliser des opérations basiques.
Prérequis :
- Le service MySQL ou MariaDB doit être en fonctionnement sur ServBay.
- Vous avez créé une base nommée
servbay_db
. - Un utilisateur
servbay_user
muni du mot de passeyour_password
dispose des droits sur cette base. - La table
users
existe dansservbay_db
, avec les colonnes :id
(INT, PK, AI),name
(VARCHAR),email
(VARCHAR),age
(INT).
Servez-vous de phpMyAdmin intégré à ServBay ou de tout autre outil pour ces opérations.
Exemples (méthode mysqli
)
<?php
// --- Exemple mysqli ---
// Paramètres de connexion à la base de données
$servername = "127.0.0.1"; // ou 'localhost'
$port = 3306; // Port par défaut MySQL/MariaDB sous ServBay
$username = "servbay_user";
$password = "your_password"; // À remplacer par votre mot de passe réel
$dbname = "servbay_db";
// Création de la connexion mysqli (mode orienté objet)
$conn = new mysqli($servername, $username, $password, $dbname, $port);
// Vérification de la connexion
if ($conn->connect_error) {
die("mysqli Connection failed: " . $conn->connect_error);
}
echo "mysqli Connected successfully<br>";
// Insertion de données (requête préparée pour éviter les injections SQL)
$stmt = $conn->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
$name = "ServBay Demo";
$email = "[email protected]";
$age = 5;
// "ssi" signifie string, string, integer
$stmt->bind_param("ssi", $name, $email, $age);
if ($stmt->execute()) {
echo "mysqli: New record created successfully<br>";
} else {
echo "mysqli Error: " . $stmt->error . "<br>";
}
$stmt->close();
// Sélection de données
$sql = "SELECT id, name, email, age FROM users WHERE name = 'ServBay Demo'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "mysqli Queried data:<br>";
// Affichage des résultats
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. " - Age: " . $row["age"]. "<br>";
}
} else {
echo "mysqli: 0 results found<br>";
}
// Fermeture de la connexion
$conn->close();
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Exemples (méthode PDO
)
<?php
// --- Exemple PDO ---
// Paramètres de connexion à la base de données
$host = '127.0.0.1'; // ou 'localhost'
$port = 3306; // Port par défaut MySQL/MariaDB sous ServBay
$dbname = 'servbay_db';
$username = 'servbay_user';
$password = 'your_password'; // À remplacer par votre mot de passe réel
$charset = 'utf8mb4';
// DSN (Data Source Name)
$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=$charset";
// Options de connexion PDO
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Lever une exception plutôt qu'un avertissement
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Retourner par défaut des tableaux associatifs
PDO::ATTR_EMULATE_PREPARES => false, // Utiliser les requêtes préparées natives
];
try {
// Création de l'instance PDO
$pdo = new PDO($dsn, $username, $password, $options);
echo "PDO Connected successfully<br>";
// Insertion de données (requête préparée)
$sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)";
$stmt = $pdo->prepare($sql);
$name = 'ServBay PDO Demo';
$email = '[email protected]';
$age = 10;
// Liaison des paramètres et exécution
$stmt->execute([
':name' => $name,
':email' => $email,
':age' => $age
]);
echo "PDO: New record created successfully<br>";
// Sélection de données
$stmt = $pdo->prepare("SELECT id, name, email, age FROM users WHERE name = :name");
$stmt->execute([':name' => 'ServBay PDO Demo']);
// Récupération de tous les résultats
$users = $stmt->fetchAll(); // Par défaut FETCH_ASSOC
if ($users) {
echo "PDO Queried data:<br>";
foreach ($users as $row) {
echo "id: " . $row['id'] . " - Name: " . $row['name'] . " - Email: " . $row['email'] . " - Age: " . $row['age'] . "<br>";
}
} else {
echo "PDO: 0 results found<br>";
}
} catch (\PDOException $e) {
// Capture et affichage des erreurs de connexion ou de requête
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
// La connexion PDO est habituellement fermée automatiquement à la fin du script
// $pdo = null; // Optionnel : assigner null pour forcer la fermeture
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Mise en place du code : Enregistrez l’un des exemples ci-dessus en tant que fichier .php
(ex : db_test_mysqli.php
ou db_test_pdo.php
) et déposez-le dans le dossier racine de votre site ServBay (ex : /Applications/ServBay/www/monprojet/
). Accédez-y ensuite via votre navigateur à l’adresse (ex : http://monprojet.servbay.demo/db_test_mysqli.php
). Veillez à ce que votre site soit correctement configuré et en marche dans ServBay.
Foire Aux Questions (FAQ)
Q : Dois-je installer manuellement les extensions MySQL de PHP dans ServBay ?
R : Non. ServBay a déjà préinstallé et activé par défaut les trois extensions essentielles (mysqlnd
, mysqli
et PDO_MySQL
) pour toutes les versions de PHP. Vous pouvez les utiliser directement dans votre code PHP, sans aucune installation ou configuration complémentaire.
Q : Dois-je préférer mysqli
ou PDO
?
R :
- Privilégiez
PDO
: Si votre application doit pouvoir changer de base de données (pas seulement MySQL/MariaDB), ou si vous voulez un code moderne, orienté objet et portable, PDO est à privilégier. Les requêtes préparées sont obligatoires, ce qui améliore la sécurité. - Utilisez
mysqli
dans certains cas : Si votre projet reste exclusivement sur MySQL/MariaDB et que vous exploitez des fonctionnalités avancées spécifiques à ces systèmes,mysqli
est un choix puissant et performant, offrant les deux styles de programmation (objet/procédural).
Pour tout nouveau projet, l’usage de PDO est généralement recommandé.
Q : Comment trouver les paramètres de connexion à MySQL/MariaDB sous ServBay ?
R :
- Hôte (Host) : Généralement
127.0.0.1
oulocalhost
. - Port : Le port par défaut est
3306
. Vérifiez le numéro précis dans la gestion des paquets ServBay si nécessaire. - Utilisateur / Mot de passe : Créez l'utilisateur dans MySQL/MariaDB, ou éventuellement utilisez
root
(jamais en production). La gestion des utilisateurs et droits se gère efficacement via phpMyAdmin intégré ou tout autre outil dédié. - Nom de la base : Indiquez le nom de la base à laquelle vous souhaitez vous connecter.
Q : Mon vieux projet utilise des fonctions mysql_*
dépréciées. Est-ce supporté par ServBay ?
R : Oui. Pour faciliter la maintenance ou la migration de projets anciens, ServBay intègre le support des anciennes fonctions mysql_*
(ex : mysql_connect
) dans PHP 5.6. Ces fonctions ont été dépréciées depuis PHP 5.5 et supprimées en PHP 7.0. Grâce à PHP 5.6 via ServBay, vous pouvez faire tourner du code legacy sans chercher une version PHP encore plus ancienne.
Néanmoins, il est vivement recommandé de :
- Réserver ce recours à la compatibilité temporaire ou la maintenance d’applications héritées.
- Pour tout nouveau projet ou lors de la refonte d’un ancien code, de migrer impérativement vers les extensions modernes et sécurisées
mysqli
ouPDO
. Les fonctionsmysql_*
posent des risques de sécurité (notamment à cause des attaques d'injection SQL) et n’incluent pas les fonctionnalités récentes des bases de données.
Conclusion
Grâce à l’activation par défaut de mysqlnd
, mysqli
et PDO_MySQL
pour toutes les versions de PHP, ainsi qu’au support des fonctions mysql_*
pour PHP 5.6, ServBay simplifie radicalement la gestion des bases de données pour les développeurs PHP. Oubliez la complexité de l’installation et de la configuration des extensions, choisissez simplement l’extension la mieux adaptée à votre projet (PDO ou mysqli étant recommandés) et connectez-vous sans difficulté à vos bases MySQL ou MariaDB sous ServBay.
Cette expérience « prête à l’emploi » vous permet de vous concentrer sur la logique métier de vos applications, tout en profitant d’un environnement local stable et performant, idéal pour concevoir, tester et maintenir vos services web rapidement.