Cours ⇒ Base de données Mysql facebook twitter youtube

Requête préparées | Requête préparées


Requête préparées

 

Une requête prépare c’est très utilise elle a plusieurs avantages.

  1. Évite l’injection SQL car les données de la requête ne peuvent pas être exécutées.
  2. Dans le cas où vous voulez exécuter plusieurs fois de suite une requête comme INSERT avec des valeurs différentes, il n’est pas nécessaire de reconstruire la requête à chaque fois .il suffit de lier les nouvelle valeurs et exécuter à nouveau la requête.
  3. Plus sécurisée et plus rapide qu’une requête non prépares
 

 

1-lire des données

Pour exécuter une requête ce n’est pas comme la requête non prépare il faut  préparer la requête.

Comment faire ?  Il faut écrire la requête en remplaçant les valeurs par un point d’interrogation ( ?) qui sont remplacer ensuite par les valeurs.

mysqli_prepare() : c’est la fonction qui prépare la requête elle prend comme paramétré

  1. objet renvoyer par mysqli_connect() ;
  2. La requête SQL avec les points d’interrogation

Cette fonction retourne un objet mysqli_stmt  utilisé par les fonction  mysqli_stmt_bind_param() et mysqli_bind_result().

La fonction mysqli_stmt_bind() : permet de lire les variables à une requête SQL.

Elle a trois paramètres

  1. L’objet de la requête c’est résultat renvoyé par la fonction mysqli_prepare().
  2. Les types de chaine de caractères.
  • s pour les chaines de caractères.
  • i pour les entiers.
  • d pour les nombres décimaux.
  • b pour les blod.
  1. Les variables : c’est une liste des variables liées aux paramètres de la requête SQL séparé par une virgule.
  2. Elle retourne true c’est ya pas d’erreur sinon false .

Remarque :

Pour exécuter  la requête il faut utiliser la fonction mysqli_stmt_execute() ;

La fonction mysqli_stmt_execute : Elle prend comme paramètre l’objet requête renvoyé par la fonction mysqli_prepare()et les variables correspondant à chaque colonne .elle retourne false en cas d’échec et true en cas de succès .

Et apres il faut exécute la requête préparée avec la fonction mysqli_stmt_execute() et cette dernière elle prend comme paramètre l’objet renvoyer par mysqli_prepare() et elle retourne false en cas d’erreur sinon true.

Lire les données

Pour lire les valeurs dans une boucle il faut utiliser la fonction  mysqli_stmt_fetch().

La fonction  mysqli_stmt_fetch() : elle prend comme paramètre l’objet renvoyer par mysqli_prepare() et retourne false en cas d’erreur sinon tue .

A la fin il faut ferme une requête prépare avec la fonction mysqli_stmt_close() qui prend comme paramètre l’objet requête renvoyer par la fonction mysqli_prepare() ; elle retourne true en cas de succès et  sinon false .

 

 

 

 

Assez de blablablablablablabla !!!!

 On va voir un exemple pour comprendre tous sa.

 

 

Exemple

On notre rable sql

id

nom

preno

age

1

dupont

tata

15

2

chach

jean

75

4

Dupont

Paul

45

5

Durand

Jean

25

6

boudai

fato

28

7

kalou

marie

55

 

 

 Dans l’exemple on va afficher tous l’utilisateur (nom prénom et Age) qui sont âgés pus de 45ans

 

Code:

<?php
$sql_serveur = 'localhost'; //Serveur de la Base De Donnée (BDD) (Par exemple : localhost ou 127.0.0.1)
$sql_login = 'root'; //Login BDD
$sql_pass = ''; //Pass BDD il est vide ici
$sql_bdd = 'exemple'; //Nom de la BDD mais pas la table
//connexion à la base de données
$base =mysqli_connect($sql_serveur,$sql_login,$sql_pass, $sql_bdd);
//verifier la connexion
if($base)
{
    echo "<h1> La connexion réussie !!!</h1>";
// La condition c'est >=45 don on va remplacer 45 par ?
$sql="SELECT nom,prenom ,age FROM utilisateur WHERE age >=?";
//préparation de la requête
$result = mysqli_prepare($base,$sql);
// On va faire les liaisons des  paramètres
$para=mysqli_stmt_bind_param($result,'i',$age);
$age=45;// on na pas executer la requte encore
//là on va exécuter la requête
$para=mysqli_stmt_execute($result);

if ($para==false) {
    echo "<br>Echec de l'execution de la requete!!!!";
}
else
{
    echo "<br><h1>Succes de la requete</h1>";
    //là on va faire association des variable de résultat
    $para=mysqli_stmt_bind_result($result,$nom,$prenom,$age);
    //lecteur des variables
    echo "<br><h1>L’utilisateur âgés plus ou égale  de 45 est:</h1>";
    //on fait une boule pour afficher tous
    while (mysqli_stmt_fetch($result))
    {
        echo "Nom & Prénom :".$nom. " ".$prenom." Agés de : ".$age."<br>" ;
}
//on ferme la requête
mysqli_stmt_close($result);    
    }
}
else
{
echo "<h1> Echec de La connexion ????</h1>";    
}
?>
 

Résultat

 

La connexion réussie !!!

Succes de la requete

L’utilisateur âgés plus ou égale de 45 est:

Nom & Prénom :chach jean Agés de : 75
Nom & Prénom :Dupont Paul Agés de : 45
Nom & Prénom :kalou marie Agés de : 55

 

 

1- Écrire des données

 Pour écrire dans une table SQL on utilise  INSERT

Donc il faut préparer la requête avec la fonction mysqli_prepare() ;,de lire les variables à la requête avec mysqli_stmt_bind_param() ;et exécuter avec mysqli_stmt_execute() ;

Exemple :

Toujours dans notre table  on va ajouter Sabar Ahmed âgés de 40ans dans  notre table

Code:

<?php
$sql_serveur = 'localhost';
$sql_login = 'root';
$sql_pass = '';
$sql_bdd = 'exemple';
//connexion à la base de données
$base=mysqli_connect($sql_serveur,$sql_login,$sql_pass,$sql_bdd);

if ($base)
{
    echo "<h5> La connexion réussie !!!</h5>";
    //on écrire une  requête  mais pas exécuter encore
    $req="INSERT INTO utilisateur (nom,prenom,age) VALUES (?,?,?)";
    //préparation de la requête
    $resultat=mysqli_prepare($base,$req);
    //faire des liaisons du paramètre
    // on va utiliser ssi nom->s et prénom->s et Age->i
    $pra=mysqli_stmt_bind_param($resultat,'ssi',$nom,$prenom,$age);
    //Sabar Ahmed âgés de 40ans
    $nom='Sabar';
    $prenom='Ahmed';
    $age='40';
    //là on va exécuter la requête
    if (mysqli_stmt_execute($resultat))
    {
         //voir tous avec une requête non prépare
         $req_voir=mysqli_query($base,'SELECT * FROM utilisateur');

         while ($ligne=mysqli_fetch_assoc($req_voir))
    {
        echo "<hr>";
        echo' Nom: '.$ligne['nom'].'  Prenom : '.$ligne['prenom'].'Ages de :'.$ligne['age'].'<br>';
}
    }
}
else
{
echo "<h5> Echec de La connexion ????</h5>";
}
?>
 

Afficfer

 
La connexion réussie !!!

Nom: dupont Prenom : tataAges de :15

 


Nom: chach Prenom : jeanAges de :75

 


Nom: Dupont Prenom : PaulAges de :45

 


Nom: Durand Prenom : JeanAges de :25

 


Nom: boudai Prenom : fatoAges de :28

 


Nom: kalou Prenom : marieAges de :55

 


Nom: Sabar Prenom : AhmedAges de :40

 

 





>
Changer le fond
Oregionale Skin
7astuces
Sélectionnez un Fond (11)
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces
Fond de contenu
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces