IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Faire des requêtes préparées avec l'extension mysql


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #1
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut Faire des requêtes préparées avec l'extension mysql
    Bonjour,

    Je vous propose un nouvel élément à utiliser : Faire des requêtes préparées avec l'extension mysql

    L'extension Mysql commence à bien vieillir et est maintenant uniquement en correction de bug, l'extension mysqli la remplace, et PDO possède aussi un driver mysql. (plus d'info ici : http://fr2.php.net/manual/fr/mysqli.overview.php)

    Avec PDO on a vite pris l'habitude de faire des requêtes préparées, de part sa simplicité, mais aussi sa couche sécuritaire. Mais il y'a malheureusement encore des résistants du mysql_* (coucou PHP 4) qui eux n'ont pas de requêtes préparées avec l'api. Et rien n'empêche d'en faire



    Je vous propose donc trois fonctions supplémentaires pour mysql_* :
    - mysql_prepare
    - mysql_execute

    Et en bonus :
    - mysql_fetch_all (compatible avec les mysql_fetch_*)


    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ini_set('mysql.trace_mode', true);
    mysql_connect('localhost', 'root', '');
    mysql_select_db('test');
    mysql_set_charset('utf8');
     
    $stmt = mysql_prepare('SELECT * FROM `test` WHERE `id` > ? LIMIT ?');
    $result = mysql_execute(array(5, 3), $stmt);
     
    echo '<pre>';
    print_r(mysql_fetch_all($result, 'object'));
    echo '</pre>';

    Qu'en pensez-vous ?

  2. #2
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Sa fait beacoup de ligne par rapport a PDO ....


    De plus a part en local et peut etre quelque rare hebergeur, la fonction init n'est pas autorisé...

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Sa fait beacoup de ligne par rapport a PDO ....


    De plus a part en local et peut etre quelque rare hebergeur, la fonction init n'est pas autorisé...
    non ca fait même moins de ligne que PDO, pour le ini_set c'est pas obligatoire tu peux toujours utiliser les or die pas beaux (regarde a quoi correspond mysql.trace_mode...)

    en PDO ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    try
    {
        $driver_options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING, 
                                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
        $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', '', $driver_options);
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
     
    $stmt = $dbh->prepare('SELECT * FROM `test` WHERE `id` > ? LIMIT ?');
    $stmt->bindValue(1, 5, PDO::PARAM_INT);
    $stmt->bindValue(2, 3, PDO::PARAM_INT);
    $stmt->execute();
     
    echo '<pre>';
    print_r($stmt->fetchAll(PDO::FETCH_OBJ));
    echo '</pre>'
    donc plus de ligne

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Pour ceux qui seraient intéressés par le projet voici les derniers ajouts :

    • Support du $link
    • Support du fetch group
    • Ajout des erreurs liés aux paramètres de fonction


    L'adresse du projet : https://github.com/stealth35/mysql_prepare


Discussions similaires

  1. Réponses: 2
    Dernier message: 17/10/2013, 15h01
  2. Faire des requêtes préparées avec l'extension mysql
    Par stealth35 dans le forum Téléchargez
    Réponses: 1
    Dernier message: 23/02/2011, 10h23
  3. [Data] Faire des requêtes en dur avec des DAO
    Par hocinema dans le forum Spring
    Réponses: 8
    Dernier message: 22/04/2010, 09h50
  4. Cmt faire des états parametrés avec Cristal Report(VB 6)?
    Par bonsam dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/12/2005, 03h48
  5. [GD] Faire des PNG 8bits avec la GD2
    Par El Riiico dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 30/11/2005, 23h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo