我有一个动态生成的表单。最终用户将能够向数据库提交员工详细信息。因此数组 $fname 将包含所有名字,$lname 将包含所有姓氏等。然后将数组插入到 MySQL 中,如下所示:
$query = "INSERT INTO workers (date_added, department,fname, lname, rank)
VALUES ";
$fname = count(fname);
for($i=0; $i<$employee_count; $i++) {
$query .= "(NOW(),'$department','{$fname[$i]}','{$lname[$i]}','{$rank[$i]}'),\n";
}
这有效great直到我们有像单引号这样的危险字符,例如 MC'Mahon,这会使查询失败。我无法使用许多普通函数,例如 mysqli_real_escape_string(),因为这是一个数组。
有没有办法清理数组,即转义数组内的任何危险字符,以便我在将每个数组推入 for 循环之前清理每个数组,将每个数组拆分为字符串,然后将其输入到 MySQL 中?
你可以使用array_map https://www.php.net/array_map在你之前for
环形。该函数对数组的每个值应用回调。在这种情况下,回调将是mysqli_real_escape_string
.
$fname = array_map('mysqli_real_escape_string', $fname);
$lname = array_map('mysqli_real_escape_string', $lname);
$rank = array_map('mysqli_real_escape_string', $rank);
根据以下评论进行更新:
To use mysqli_real_escape_string
在程序模式下,您需要传递“链接”,因此您需要创建一个自定义函数:
function array_map_callback($a)
{
global $dbc;
return mysqli_real_escape_string($dbc, $a);
}
$fname = array_map('array_map_callback', $fname);
$lname = array_map('array_map_callback', $lname);
$rank = array_map('array_map_callback', $rank);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)