- 20 April 2006
- 22.682
- 1.315
Ich poste hier mal meine Funktion (hier vereinfacht, da ich eigentlich eine Klasse benutze), die ich immer für Datenbank-Abfragen verwende. Bei dieser Funktion wird jeder Parameter, der an die Datenbank übergeben wird, vorher escaped, d.h. es sind keine SQL-Injections möglich.
Benutzt wird sie so, wie man es von xprintf() gewohnt ist:
PHP:
function mysql_queryf($queryformat /* ,$queryarg1,$queryarg2,.... */)
{
$queryargs=func_get_args();
$vars=array();
for($i=1;$i<count($queryargs);$i++)
$vars[]=mysql_real_escape_string($queryargs[$i]);
$querystring=vsprintf($queryformat,$vars);
return mysql_query($querystring);
}
PHP:
// früher mit mysql_query() direkt:
$res=mysql_query("SELECT `field` FROM `table` WHERE `userid`=".$_POST['userid']." AND `pw`='".$_POST['pw']."'");
// besser mit mysql_queryf():
$res=mysql_queryf("SELECT `field` FROM `table` WHERE `userid`=%u AND `pw`='%s'",$_POST['userid'],$_POST['pw']);