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 '';
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 '';
Compatibilité :
<?php /** * @param string $query * @param ressource $link optional * * @return string */ function mysql_prepare($query, $link = null) { { return false; } { return false; } { __FUNCTION__), E_USER_WARNING); return false; } { } else { } { { return $stmt; } } else { { return $stmt; } } return false; } /** * @param string $stmt * @param array $input_parameters optional * @param ressource $link optional * * @return ressource */ { { return false; } { return false; } { return false; } { __FUNCTION__), E_USER_WARNING); return false; } foreach($input_parameters as $id => $input_parameter) { { $sf = '@`%s` = %s'; } else { $sf = '@`%s` = \'%s\''; } { } else { } } { { { return false; } } else { { return false; } } } else { } { } } /** * @param ressource $result * @param string $type optional * @param boolean $group optional * * @return mixed */ function mysql_fetch_all($result, $type = 'array', $group = false) { { return false; } { return false; } { return false; } { __FUNCTION__), E_USER_WARNING); return false; } { if(false !== $row) { if($group) { if('array' === $type) { } if('object' === $type) { } else { } $rows[$col][] = $row; } else { $rows[] = $row; } } else { return false; } } { return $rows; } return false; }
Poster une réponse
Retrouver la discussion sur le forum
Membre habitué
le 23/02/2011
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é...
Modérateur
le 23/02/2011
Citation:
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é... |
Code :
12345678910111213141516171819 | 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>' |
Modérateur
le 03/03/2011
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.




La discussion sur le forum
