0

他の配列を含む配列があります。メイン配列 ($inputarray) の各配列のすべてのメンバーを呼び出さずに、関数を配列に適用するにはどうすればよいですか?

$inputarray = array($product, $first_name, $last_name, $email_from, $preftel, $address, $zip, $city, $address_array, $zip_array, $city_array, $per, $datew, $hqty, $nrf, $tw, $meters, $comments);  

function create_safe_array($a){
  global $link;                                 
  return $link->real_escape_string($a);
}

$inputarray = array_map('create_safe_array', $inputarray);

編集:

require_once "sql.php";
$link = new mysqli($host, $user, $pw, $db) or die(".....");
$link->set_charset('UTF8');


$inputarray = array($product, $first_name, $last_name, $email_from, $preftel, $address, $zip, $city, $per, $datew, $hqty, $nrf, $tw, $meters, $comments);  

function create_safe_array($a){
  global $link;                                 
  return $link->real_escape_string($a);
}

$inputarray = array_map('create_safe_array', $inputarray);


$dateactial = date('d.m.Y');

$timeactual= date('H:i');

$sql = "INSERT INTO ORD (Date, Time, Prod, Name, LName, Mail, Tel, Address, ZIP, City,  Per, Date_When, Quantity, Nr_fo, Twag, Meters, Osservazioni) VALUES ('$dateactial ', '$timeactual', '$inputarray[0]', '$inputarray[1]', '$inputarray[2]', '$inputarray[3]', '$inputarray[4]', '$inputarray[5]', '$inputarray[6]', '$inputarray[7]', '$inputarray[8]', '$inputarray[9]', '$inputarray[10]', '$inputarray[11]', '$inputarray[12]', '$inputarray[13]', '$inputarray[14]')";

$link->query($sql) or die("....");
$link->close();
4

2 に答える 2

6

再帰的に行う:

function create_safe_array($a){
  if(is_array($a)){
     return array_map('create_safe_array', $a);
  }
  global $link;                                 
  return $link->real_escape_string($a);
}
于 2013-05-12T21:02:12.817 に答える
4

array_map の代わりにarray_walk_recursive()を使用できます(配列は参照によって渡されることに注意してください)。また、PHP 5.3.x 以降を使用している場合は、.useではなくglobal.

array_walk_recursive(
    $inputarray,
    function (&$value) use ($link) {
        $value = $link->real_escape_string($value);

    }
);

しかし (Spudley がコメントしているように) 準備済みステートメントは、MySQLi を使用する場合、よりクリーンで安全なオプションです。

于 2013-05-12T21:15:04.470 に答える