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

Présentation
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 '';
Téléchargement
Compatibilité
Linux Mac Windows
0  0 
Téléchargé 114 fois Voir les 3 commentaires
Détails
Avatar de stealth35
Expert éminent sénior
Voir tous les téléchargements de l'auteur
Licence : Creative Commons
Date de mise en ligne : 3 mars 2011




Avatar de thebarbarius thebarbarius - Inactif https://www.developpez.com
le 23/02/2011 à 10:23
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é...
Avatar de stealth35 stealth35 - Expert éminent sénior https://www.developpez.com
le 23/02/2011 à 11:08
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
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
Avatar de stealth35 stealth35 - Expert éminent sénior https://www.developpez.com
le 03/03/2011 à 2:15
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

Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Contacter le responsable de la rubrique PHP