Connexion web à une base de données

Jean Francis Michon

Grâce au langage PHP on peut facilement utiliser une base de données comme mySQL depuis une page web. On peut lancer des requêtes SQL et afficher leurs résultats sur le navigateur, ou les enregistrer sous forme de fichiers JSON par exemple.

L'utilisation via le web d'une BD est à la base de tout le commerce électronique. Elle doit être utilisée avec précaution, car elle peut être le point d'entrée d'attaques par injection SQL de votre BD. Soyez prudents !

Voici une page PHP qui utilise (sans précaution!) les objets PDO pour créer la connexion avec la base de données borabora_Cours affiche le résultat d'une requête simple sur ma table clients au format JSON :

<html>
<head >
    <title> Test php connexion bd</title>
</head>
<body>
<?php
echo  '<p>Je vais me connecter </p>';
try
{
    $pdo = new PDO(
    'mysql:host=localhost;dbname=borabora_Cours;charset=utf8mb4',
    '***', //votre identifiant MySQL
    '***'  //votre mot de passe MySQL
    );
    $reponse = array();
    foreach ($pdo->query('SELECT * FROM client', $fetchMode = PDO::FETCH_ASSOC) as $ligne )
    {   
        $reponse[]=$ligne;
    }

} catch (PDOException $e){
    echo 'Erreur : '. $e->getMessage() . '<br/>';
    die;
}
print json_encode($reponse,JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK|JSON_PRETTY_PRINT);
echo '<p> çà marche! <p>'; 
?>
</body>
</html>
maconnexion.php
Voici le résultat :

Je vais me connecter

[ [ "Avar", "Cawén", null ], [ "Каразин", "Василий", 61000 ], [ "", "Elodie ", null ], [ "eazea", "qqzd", null ], [ "eazea", "qqzd", null ], [ "DUPRE", null, null ] ]

çà marche!

Explications.

Vous devez nommer votre fichier avec une extension .php (et pas .htm ou .html). Il sera compilé pr le compilateur php (utilisez une version récente >7.0). On crée une connexion qui est un objet PDO de PHP avec, en paramètre

Remarquez la syntaxe délirante mélangeant les ";" et les "," (je crois que cela a été amélioré dans les versions récentes du compilateur PHP.

On lance ensuite la requête avec la fonction query de l'objet pdo et en utilisant l'option PDO::FETCH_ASSOC qui permet de ne pas redoubler les champs dans la variable liste qui stocke chacune des réponses. Essayez de supprimer le fetchMode pour voir). Du point de vue de la sécurité ce n'est pas une bonne chose , car vous affichez le nom de vos champs. Dans la pratique il vaut mieux utiliser PDO::FETCH_NUM qui n'affichera pas les noms des champs.