2016-11-10 2 views
0

mit Ich habe PHP 5.2 und ich versuche, dieses anonyme Funktion zu verwendenBehelfslösung für nicht anonyme Funktionen

$values = array_map(function ($value) use ($link){ 
    if($value == null) return null; 
    return mysqli_real_escape_string($link, (string)$value); 
}, array_values($input)); 

Server Antwort

PHP Error Message Parse error: syntax error, unexpected T_FUNCTION in MY FILE on line 16

So Server pflegt diese anonyme Funktion lesen, so ich muss es definieren Recht?

$func = function ($value) use ($link){ 
    if($value == null) return null; 
    return mysqli_real_escape_string($link, (string)$value); 
}; 
$values = array_map($func, array_values($input)); 

Noch funktioniert es. Irgendwelche Hilfe?

+2

?? Server PHP Version? – RiggsFolly

+0

Verwenden Sie vorbereitete Anweisungen und dann müssen Sie keine 'mysqli_real_escape_string' Sachen mehr tun. – RiggsFolly

+0

Ihr Skript läuft Gefahr von [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql -injektion-in-php) Schauen Sie sich an, was mit [Little Bobby Tables] passiert ist (http://bobby-tables.com/) Sogar [Wenn Sie Eingaben entgehen, ist es nicht sicher!] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) Verwenden Sie [vorbereitete parametrisierte Anweisungen] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php) – RiggsFolly

Antwort

0

Anonyme Funktionen zur Verfügung standen wie von PHP 5.3, so 5.2 verfügt nicht über sie

Diese in allen Versionen von PHP funktionieren sollte

function array_stuff($value){ 
    global $link; // I hate this sooo much but necessary evil here 
    if($value == null) return null; 
    return mysqli_real_escape_string($link, (string)$value); 
}; 
$values = array_map('array_stuff', array_values($input)); 
+0

Vielen Dank, mein Herr, es trifft die Stelle. – unkn0wn

Verwandte Themen