Téléchargé 17 fois
Vote des utilisateurs
0
0
Détails
Licence : Creative Commons
Mise en ligne le 3 mars 2011
Plate-formes :
Linux, Mac, Windows
Langue : Français
Référencé dans
Navigation
Faire des requêtes préparées avec l'extension mysql
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_*)
Adresse du projet : https://github.com/stealth35/mysql_prepare
Exemple d'utilisation :
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 '';
print_r(mysql_fetch_all($result, 'object'));
echo '';
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_*)
Adresse du projet : https://github.com/stealth35/mysql_prepare
Exemple d'utilisation :
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 '';
print_r(mysql_fetch_all($result, 'object'));
echo '';
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é...
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 :
donc plus de ligne
en PDO ca donne :
Code : | Sélectionner tout |
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>' |
Pour ceux qui seraient intéressés par le projet voici les derniers ajouts :
L'adresse du projet : https://github.com/stealth35/mysql_prepare
- 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
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.