mysql_connect (obsolète)
Cette fonction permet d'établir une connexion à un serveur MySQL. Elle est obsolète depuis PHP 5.5.5 et supprimée à partir de PHP 7.0.0.
mysqli_connect
L'extension mysqli offre des approches orientées objet et procédurale pour connecter PHP à MySQL. Le choix du style n'affecte pas le résultat final.
Approche orientée objet
$db = new mysqli('localhost', 'utilisateur', 'mot_de_passe', 'base_de_donnees');
if ($db->connect_error) {
die('Erreur de connexion : ' . $db->connect_error);
}
// Changer la base de données active (retourne un booléen)
$selection = $db->select_db('autre_base');
if (!$selection) {
echo 'Erreur : ' . $db->error;
exit;
}
$db->set_charset('utf8mb4');
echo $db->host_info;
// Exécuter une requête (retourne un objet mysqli_result ou true)
$resultat = $db->query("SELECT * FROM `ma_table`");
// Récupérer une ligne sous forme de tableau associatif
$ligne = $resultat->fetch_assoc();
// Récupérer une ligne sous forme de tableau indexé
$ligne = $resultat->fetch_row();
// Récupérer une ligne avec un format spécifié (MYSQLI_ASSOC, MYSQLI_NUM, MYSQLI_BOTH)
$ligne = $resultat->fetch_array(MYSQLI_NUM);
$db->close();
Approche procédurale
$connexion = mysqli_connect('localhost', 'utilisateur', 'mot_de_passe', 'base_de_donnees');
if (!$connexion) {
die('Échec de la connexion');
}
mysqli_set_charset($connexion, 'utf8mb4');
$resultat = mysqli_query($connexion, "SELECT * FROM `utilisateurs` LIMIT 1");
var_dump($resultat);
mysqli_close($connexion);
Classe PDO
PDO fournit une interface unifiée pour accéder à différentes bases de données. Elle encapsule la connexion et offre des fonctionnalités avencées.
$dsn = 'mysql:dbname=ma_base;host=127.0.0.1';
try {
$pdo = new PDO($dsn, 'utilisateur', 'mot_de_passe');
} catch (PDOException $exception) {
echo 'Erreur de connexion : ' . $exception->getMessage();
exit;
}
$requete = 'SELECT * FROM articles';
// Exécuter une requête sans résultat (retourne le nombre de lignes affectées)
$nombre = $pdo->exec("UPDATE articles SET statut = 'publié'");
// Exécuter une requête avec résultat (retourne un objet PDOStatement ou false)
$statement = $pdo->query($requete);
if ($statement === false) {
print_r($pdo->errorInfo());
exit;
}
// Récupérer une ligne avec fetch()
$ligne = $statement->fetch(); // Tableau mixte par défaut
$ligne = $statement->fetch(PDO::FETCH_ASSOC); // Tableau associatif
// Récupérer toutes les lignes avec fetchAll()
$toutes_les_lignes = $statement->fetchAll(); // Tableau de tableaux mixtes
$toutes_les_lignes = $statement->fetchAll(PDO::FETCH_ASSOC); // Tableau de tableaux associatifs
// Parcourir les résultats directement via l'itérateur
foreach ($statement as $enregistrement) {
var_dump($enregistrement);
}