如何将其作为循环执行,因此我不必手动为数组的每个元素执行此操作?
$filename=$_POST['filename'];
$handle = fopen("$filename", "r");
while (($data = fgetcsv($handle, 5000, ",")) !== FALSE)
{
$data[0] = mysql_escape_string($data[0]); /// customer id
$data[1] = mysql_escape_string($data[1]); /// first name
$data[2] = mysql_escape_string($data[2]); /// last name
$data[3] = mysql_escape_string($data[3]); /// email
$data[4] = mysql_escape_string($data[4]); /// phone
$data[5] = mysql_escape_string($data[5]); /// mobile
$data[6] = mysql_escape_string($data[6]); /// website
$data[7] = mysql_escape_string($data[7]); /// DOB
$data[8] = mysql_escape_string($data[8]); /// spouse first name
$data[9] = mysql_escape_string($data[9]); /// spouse last name
$data[10] = mysql_escape_string($data[10]); /// spouse cell
$data[11] = mysql_escape_string($data[11]); /// spouse email
$data[12] = mysql_escape_string($data[12]); //// created by
$data[13] = mysql_escape_string($data[13]); //// created on
}
答案 0 :(得分:2)
类似于: -
将此内容放入loop
$count=count($data);
for ($i=0; $i< $count; $i++)
{
$data[$i] = mysql_escape_string($data[$i]);
}
答案 1 :(得分:1)
array_map,array_walk或foreach。把一个(只有一个!)放在循环中
$dataSafe = array_map('mysql_escape_string', $data);
或
array_walk($data, function(&$x) {$x = mysql_escape_string($x);});
请注意,array_map与FP意义上的map类似,它返回一个新数组,您必须分配。当使用&
时,array_walk可以改变您的数组
http://php.net/manual/en/function.array-walk.php
http://php.net/manual/en/function.array-map.php
foreach(&$data as $x)
$x = mysql_escape_string($x)
PS - mysql_real_escape_string
是首选
答案 2 :(得分:0)
或者你可以把它放在你的while循环中:
$data = array_map("mysql_escape_string", $data);
我没有测试过,但可能更快。
编辑:添加了“$ data =” - 因为jon_darkstar指出array_map不会更改作为参数提供的数组,您需要分配它。