Connexion à MySQL avec PHP : options disponibles

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);
}

Étiquettes: PHP MySQL mysqli PDO base de données

Publié le 9 juillet à 23h48