Cours PHP : base de données en PDF (Intermédiaire)
PHP : Base de données : Ce qu'il faut savoir. Définition technique : ensemble des techniques et fonctions PHP dédiées à l'accès, la manipulation et la gestion d'une base de données relationnelle (ex. MySQL) via les API natives mysql_*, la gestion des résultats et le traitement des erreurs. L'interfaçage PHP/back-end permet de stocker, interroger et présenter des données dynamiques dans des applications web. Document disponible en PDF gratuit et téléchargeable, contenant exemples de code et travaux pratiques pour se familiariser avec les fonctions historiques de l'écosystème PHP/MySQL. Remarque : l'extension ext/mysql (fonctions mysql_*) est dépréciée depuis PHP 5.5 et supprimée à partir de PHP 7.0 ; ce document conserve donc une valeur pédagogique et historique pour comprendre le comportement des accès basse-niveau.
Note importante : Ce cours traite des fonctions historiques mysql_*. Pour des projets modernes, il est recommandé de se tourner vers PDO ou MySQLi pour des raisons de sécurité et de compatibilité.
🎯 Ce que vous allez apprendre
- Établir et gérer une connexion MySQL — comprendre les paramètres de connexion (serveur, utilisateur, mot de passe, base) et maîtriser les appels
mysql_connect,mysql_select_db,mysql_pconnectetmysql_close. Structuration recommandée : fichierconfig.inc.phpet inclusion viarequire()pour réutilisabilité et clarté. - Construire et exécuter des requêtes SQL — formuler les principales instructions SQL (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER) et envoyer ces requêtes avec
mysql_query. Intégration dynamique des requêtes dans vos scripts PHP et récupération des identifiants de résultat pour traitement. - Extraire et manipuler les résultats — parcourir les résultats avec
mysql_fetch_row,mysql_fetch_arrayandmysql_fetch_object, et choisir l'accès par indices, par clés associatives ou par propriétés d'objet selon le besoin. - Services utilitaires de gestion des résultats — utiliser
mysql_free_result,mysql_insert_id,mysql_num_fieldsandmysql_num_rowspour optimiser la mémoire, récupérer des identifiants AUTO_INCREMENT et inspecter la structure des jeux de résultats. - Traitement des erreurs et bonnes pratiques — détecter et diagnostiquer les erreurs avec
mysql_errno()etmysql_error(), comprendre l'usage du préfixe@et tester systématiquement les retours de fonctions. Le document aborde aussi la modularisation (fichiers d'API, usage d'ODBC/PEAR::DB en couche d'abstraction) et l'usage des connexions persistantes pour optimiser les performances. Notions de sécurité et prévention des injections SQL sont introduites, avec des recommandations vers l'utilisation de requêtes préparées lorsque cela est possible.
Sécurité et injections SQL
Principes de sécurité essentiels : validation des entrées, traitements côté serveur, et neutralisation des caractères dangereux. Le PDF présente les risques d'injections SQL et donne des exemples de vérifications simples. Pour une protection renforcée, privilégier l'utilisation de requêtes préparées et d'API modernes (PDO ou MySQLi) afin de séparer clairement données et instructions SQL. Remarque : l'utilisation de fonctions d'échappement comme mysql_real_escape_string n'offre pas la même robustesse que les requêtes préparées et ne se substitue pas aux protections apportées par PDO/MySQLi.
Créer un système CRUD complet
Exercices guidés pour implémenter un CRUD (Create, Read, Update, Delete) sur une table revues : schéma de la table, pages de saisie, contrôles de saisie et gestion des identifiants AUTO_INCREMENT. Le TP illustre l'enchaînement logique des opérations et l'organisation du code pour faciliter la maintenance et l'évolution vers PDO ou MySQLi.
📑 Sommaire du document
- Introduction
- Présentation de MySQL
- Principe
- Connexion
- Interrogation
- Extraction des données et fonctions de service
- Traitement des erreurs
- Travaux pratiques
💡 Pourquoi choisir ce cours ?
Rédigé dans le cadre du référentiel BTS IRIS par Thierry VAIRA, ce document privilégie une approche pragmatique avec extraits de code concrets et exercices guidés. L'auteur détaille les fonctions natives mysql_*, montre comment structurer les fichiers de connexion (config.inc.php, mysql.inc.php) et propose des scénarios de TP pour implémenter un CRUD. L'organisation en étapes (connexion, requête, extraction, services, erreurs) facilite la mise en pratique immédiate et évoque les couches d'abstraction pour le portage vers des API modernes.
👤 À qui s'adresse ce cours ?
- Public cible : étudiants en développement web, techniciens ou intégrateurs PHP responsables de petites applications dynamiques et développeurs mainteneurs devant implémenter des accès MySQL classiques.
- Prérequis : compréhension du modèle relationnel, notions de SQL (SELECT/INSERT/UPDATE/DELETE) et maîtrise des bases du langage PHP (variables, boucles, includes), gestion des formulaires HTML (méthodes GET/POST) et notions d'architecture client‑serveur.
Alternatives modernes : PDO et MySQLi
Le PDF pose des bases logiques qui restent utiles pour comprendre le fonctionnement des accès aux bases de données et facilite la transition vers des extensions modernes. Pour un développement sécurisé et maintenable, il est conseillé d' adopter PDO ou MySQLi.
- PDO (PHP Data Objects) : API orientée objet, prise en charge de requêtes préparées et d'une gestion unifiée des bases (MySQL, SQLite, etc.).
- MySQLi : extension dédiée à MySQL avec interface procédurale et orientée objet, supporte les requêtes préparées et les fonctionnalités avancées de MySQL.
❓ Foire Aux Questions (FAQ)
Comment détecter et afficher une erreur MySQL depuis PHP ?
Vérifier systématiquement le retour des appels mysql_connect et mysql_query, puis interroger mysql_errno() et mysql_error() pour obtenir respectivement le code et le message d'erreur fournis par le serveur MySQL. En production, éviter d'afficher directement les messages d'erreur au public et consigner les informations dans des logs.
Dans quels cas utiliser mysql_fetch_row, mysql_fetch_array ou mysql_fetch_object ?
mysql_fetch_row retourne un tableau indexé utile pour un accès par position, mysql_fetch_array fournit un tableau associatif pour accéder par nom d'attribut, et mysql_fetch_object rend chaque ligne sous forme d'objet. Le choix dépend du style de code et de la clarté souhaitée pour l'accès aux champs.
Comparatif : Fonctions MySQL vs PDO
Fonctions mysql_* (historique) |
PDO (moderne) |
|---|---|
$link = mysql_connect('localhost', 'user', 'pass'); mysql_select_db('db', $link); |
$pdo = new PDO('mysql:host=localhost;dbname=db;charset=utf8', 'user', 'pass'); |
$res = mysql_query("SELECT * FROM users WHERE id=".$id); |
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?'); $stmt->execute([$id]); |
$row = mysql_fetch_assoc($res); |
$row = $stmt->fetch(PDO::FETCH_ASSOC); |
Informations sur le fichier à télécharger
- Format : PDF
- Pages : 15
- Poids : 143 Ko
- Auteur : Thierry VAIRA