PHP: mysql_real_escape_array(PHP >= 3.0.7) Maskiert spezielle Zeichen innerhalb aller Strings rekursiv in einem Array für die Verwendung in einer SQL-Anweisung. Beschreibungvoid mysql_real_escape_array (mixed input, resource dbcnx) Wendet mysql_real_escape_string auf alle Strings in einem Array an (rekursiv in beliebiger Verschachtelungstiefe). Die PHP-Funktion mysql_real_escape_string maskiert spezielle Zeichen innerhalb eines Strings für die Verwendung in einer SQL-Anweisung. Ab PHP 5 kann die Funktion array_walk_recursive benutzt werden! Die Funktion wird mit einem Parameter aufgerufen input (der ein String oder ein Array sein kann), der zweite Parameter dbcnx ist die MySQL-Verbindungskennung (erhalten durch den Aufruf von mysql_connect). Die Funktion mysql_real_escape_string gibt es erst ab PHP 4.3.0, da ältere PHP-Versionen noch häufig anzutreffen sind, habe ich die Funktion so geschrieben, dass sie auch unter älteren PHP-Versionen wichtige Sonderzeichen maskiert. Source Codefunction mysql_real_escape_array (&$dataarray, $dbcnx)
{
if (function_exists ('mysql_real_escape_string') == true)
array_walk ($dataarray, 'mrea1', $dbcnx);
else
array_walk ($dataarray, 'mrea2', $dbcnx);
}
function mrea1 (&$dataarray, $key, $dbcnx)
{
if (is_array ($dataarray) == TRUE)
array_walk ($dataarray, 'mrea1', $dbcnx);
else
$dataarray = mysql_real_escape_string ($dataarray, $dbcnx);
}
function mrea2 (&$dataarray, $key, $dbcnx)
{
if (is_array ($dataarray) == TRUE)
array_walk ($dataarray, 'mrea2', $dbcnx);
else
{
static $search = array("\x00", "\x0A", "\x0D", "\x1A", "\x09");
static $replace = array('\0', '\n', '\r', '\Z' , '\t');
$dataarray = addslashes ($dataarray);
$dataarray = str_replace ($search, $replace, $dataarray);
}
}
Beispiel$dbcnx = MySQL_Verbindung_Herstellen ();
$dataarray = array (123, "\n'Hallo'\r", array ('"Welt"'));
echo '<pre>Alt: ';
print_r ($dataarray);
mysql_real_escape_array ($dataarray, $dbcnx);
echo '<br />Gesäubert: ';
print_r ($dataarray);
echo '</pre>';
Ausgabe: Alt: Array
(
[0] => 123
[1] =>
'Hallo'
[2] => Array
(
[0] => "Welt"
)
)
Quelle: Entwurf und Umsetzung Frank Olschewski. 10/25/06 |