Page 1 sur 1

passer de la fonction mysql_ à PDO

Posté : 18 mai 2015, 15:47
par maiko
salut,

je suis entrain de changer toutes les pages de mon code en les passant à la fonction PDO car mysql_ est obselète et il y a un bout de code que je n'arrive pas. voici le bout de code en question :
<?php

    } else {
      $query ="INSERT INTO user_role
              (
                   DS_ROLE	             ,
                   DESCRIPTION         ,
                   DT_INSERT           ,
                   DF_UTENTE                    
               )   
               VALUES
              (
               
               upper('" . $_POST['ds_role'	               ] . "'),
               '" . $_POST['description'                  ] . "',
                now(),
                '".$_SESSION['user']['username']."'  
                ) " ;
      
      $result = mysql_query($query) 
        or die(mysql_error());
?>

Re: passer de la fonction mysql_ à PDO

Posté : 19 mai 2015, 13:59
par Ryle
Bonjour,

Qu'est-ce qui t'embête avec cette requête ? Tu veux passer par un prepare ? tu veux juste exécuter la requête pour insérer le champ en base ?
Quel est ton soucis en fait ? :)

Re: passer de la fonction mysql_ à PDO

Posté : 26 mai 2015, 10:20
par maiko
je voudrais changer la fonction mysql_query car elle est obselete est on dit ici " L'extension MySQL originale est maintenant obsolète, et génèrera des alertes de niveau E_DEPRECATED lors de la connexion à une base de données. A la place, utilisez l'extension MySQLi ou l'extension PDO_MySQL. " sources : http://php.net/manual/fr/migration55.deprecated.php

donc je voudrais mettre la fonction PDO

Re: passer de la fonction mysql_ à PDO

Posté : 26 mai 2015, 11:19
par Ryle
Le plus simple est de remplacer ton appel à mysql_query par un appel à la fonction équivalente de PDO
// instance de PDO et connexion à la bdd à remplacer
$dbh = new PDO('ta_base', 'ton_user', 'ton_pass'); 
// ...
$query ="INSERT INTO user_role ... ";
$result = $dbh->exec($query);
Après tu peux aussi utiliser les requêtes préparées, cela permet de protéger ton code SQL des injections quand ce n'est pas déjà le cas, et d'optimiser les performances pour des insertions ou des updates similaires (en changeant les données, mais pas la structure de la requête) à réaliser :
// la requête est modifiée pour recevoir des paramètres à la volée
$query ="INSERT INTO user_role
              (
                   DS_ROLE	             ,
                   DESCRIPTION         ,
                   DT_INSERT           ,
                   DF_UTENTE                    
               )   
               VALUES
              (
              :role,
              :desc,
              now(),
              :user) " ;

$stmt = $dbh->prepare($query); // on en fait une requête "préparée"
$stmt->execute( // on exécute la requête en spécifiant les paramètres d'exécution
  array(
    ':role' =>  $_POST['ds_role']
    , ':desc' => $_POST['description']
    , 'user' => $_SESSION['user']['username']
);