Il faudra par contre je pense mettre un gros paragraphe sur la sécurité, en expliquant par exemple combien ce type de requête peut-être une faille béante :
avec un joli Code PHP :
<?php
$query = sprintf('SELECT nom, xp FROM joueur WHERE nom = "%s"', $_POST['nom'] );
Code :
"; DELETE FROM joueur #
Eventuellement on pourrait ajouter un paragraphe sur les "placeholders" dans les couches d'abstraction, qui permettent de simplifier tout ça.
naholyr sur phpfrance a écrit :[...]
Pour se faire un constructeur de requêtes maison, c'est assez simple avec sprintf et %s (l'utilisation du point d'interogation pose quelques soucis qu'on aura ici la flemme de résoudre, avec sprintf c'est facile et on a l'habitude, pour afficher un '%' il faut mettre '%%', classique) :Code PHP :<?php
function construitRequete($requete) {
$args = func_get_args();
array_shift($args);
foreach ($args as &$arg) {
switch (gettype($arg)) {
case 'string':
$arg = '"' . mysql_real_escape_string($arg) . '"';
break;
case 'bool':
case 'boolean':
$arg = $arg ? 1 : 0;
break;
case 'array':
foreach ($arg as &$element) {
$element = construitRequete('%s', $element);
}
$arg = implode(',',$arg);
break;
}
}
array_unshift($args, $requete);
return call_user_func_array('sprintf', $args);
}