PHP, PDO : requête avec SELECT sur MYSQL avec un script PHP

exécution d’une instruction SQL (select)

RAPPEL : Dans la documentation de PDO , on peut lire :

Conclusion :  

PDO::query() exécute une requête SQL en appelant une seule fonction, retourne le jeu de résultats (s’il y en a) retourné par la requête en tant qu’objet PDOStatement.

Dans un objet PDOStatement , on utilisera principalement 2 méthodes :


utilisation, principe
utilisation, principe

affichage des données

méthode : Lire le contenu de la table et le copier dans un tableau associatif , puis insérer le tableau associatif dans la page HTML

<?php
// traitement

// connexion à la base de données : 
// création d'une instance d'un objet PDO de nom $bdd
// ATTENTION dans le tp précédent, l'instance de l'objet PDO avait pour  nom $connexion_mysql
$commande_SQL ="SELECT * FROM Etudiant ORDER BY nom;";
$reponse = $bdd->query($commande_SQL); 
$donnees = $reponse->fetchAll();  

// affichage de la vue 
?>

<ul>
<?php foreach($donnees as $row): ?> 
            <!-- [ 'nom1','adress1']  (row) -->
   <li><?php echo $row['nom']; ?>   ---   <?php echo $row['ville']; ?> </li>
<?php endforeach;?>
</ul>

ATTENTION : Dans le script PHP, l’instance de l’objet PDO avait pour nom $connexion_mysql

Cette méthode permet de séparer le traitement sur la base de données (modèle) et l’affichage des données (vue). Vous trouverez facilement d’autres façons de faire (voir annexe) mais il est vivement conseillé de ne pas mélanger l’affichage (HTML) et le traitement.

Aidez vous du script ci dessus pour réaliser les exercices ci dessous ( essayez de séparer la lecture de la table avec PDO, et l’affichage du contenu de la table )

Exercice 1

Exécuter un script PHP qui affiche :

Le numéro du groupe et du semestre sont dans 2 variables, compléter le script PHP ci dessous :

<?php 
$idGroupe=2;
$idSemestre=1;

$commande_SQL =" ";

Exercice 2

Exécuter un script PHP qui affiche :


Exercice 3


Exercice 4


Exercice 5

Modifier votre script pour :

Pour les plus rapides










ANNEXES

autres façons d’exécuter une requête SQL (méthode déconseillée pour la suite)

Exemple de script PHP :

<?php
$reponse = $bdd->query(SELECT * FROM Etudiant ORDER BY nom;); 

while ($donnees = $reponse->fetch()) 
{ 
    echo $donnees[’nom’].’<br />\n’; 
} 
?>
<?php
$commande_SQL ="SELECT * FROM Etudiant ORDER BY nom;";
$reponse = $bdd->query($commande_SQL); 
$donnees = $reponse->fetchAll();  /*On recopie le résultat de la requête dans un tableau associatif : mode PDO::FETCH_ASSOC */
 
foreach($donnees as $row)  /* On parcourt le tableau */
{
    echo $row['nom'].’<br />\n’; ;
}
?>

POUR information

1-PDO::FETCH_BOTH

C’est l’attribut choisi par défaut. Exemple de structure retournée (pour le fetch()):

Array
(
    [Id] => 1
    [0] => 1
    [Nom] => Nom0
    [1] => Nom0
) 

2-PDO::FETCH_ASSOC

Contrairement à PDO::FETCH_BOTH, PDO::FETCH_ASSOC va permettre de retourner un tableau associatif indexé seulement par le nom de la colonne.

Array
(
    [Id] => 1
    [Nom] => Nom0
)

3-PDO::FETCH_OBJ

Ce mode permet de retourner un objet avec les noms de propriétés qui correspondent aux noms des colonnes .

StdClass Object
(
    [Id] => 1
    [Nom] => Nom0
)

4-PDO::FETCH_NUM

Contrairement à PDO::FETCH_ASSOC, PDO::FETCH_NUM va permettre de retourner un tableau associatif indexé par le numéro de la colonne.

Array
(
    [0] => 1
    [1] => Nom0
) 

Il n’est pas toujours pratique de travailler seulement avec le numéro des colonnes. Si on supprime une colonne d’une table de la base de données, les résultats seront faussés.

CloseCursor : voir la doc = > http://php.net/manual/fr/pdostatement.closecursor.php


http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands