mysqli_real_escape_string 不在内部工作 array_map
mysqli_real_escape_string Not working inside array_map
我有一个插入查询的功能,但是如果我使用 mysqli_real_escape_string
它不会响应值。这是数组映射中的问题,所以我不知道如何解决这个问题。
Server version: 5.6.24 - MySQL Community Server (GPL)
我的函数是:
function insertQryStr($array, $table){
$insertUrl = "insert into %s(%s) values('%s')";
$insertQryStr = sprintf($insertUrl, $table, implode(', ',@array_map('mysql_real_escape_string', @array_keys($array))), implode("', '", @array_map('mysql_escape_string', $array)));
return $insertQryStr;
}
调用 array_map
失败,因为 mysqli_real_escape_string
作为函数使用时需要 2 个参数,第一个是 mysqli $link
as per the documentation.
array_map
不知道将连接作为第一个参数传递。更好的方法来自 this answer.
要在您的函数中使用它,您需要将 link 传递给数据库。
function insertQryStr($array, $table, $link) {
array_walk($array, function(&$string) use ($link) {
$string = mysqli_real_escape_string($link, $string);
});
return sprintf("insert into %s (%s) values('%s')",
$table,
implode(", ", array_keys($array)),
implode("', '", $array)
);
}
虽然更好的办法是在调用insertQryStr()
之前调用insertQryStr()
以避免tight coupling.
话虽如此,您应该查看并确定使用 prepared statements
,而不是以这种方式手动转义数据
我有一个插入查询的功能,但是如果我使用 mysqli_real_escape_string
它不会响应值。这是数组映射中的问题,所以我不知道如何解决这个问题。
Server version: 5.6.24 - MySQL Community Server (GPL)
我的函数是:
function insertQryStr($array, $table){
$insertUrl = "insert into %s(%s) values('%s')";
$insertQryStr = sprintf($insertUrl, $table, implode(', ',@array_map('mysql_real_escape_string', @array_keys($array))), implode("', '", @array_map('mysql_escape_string', $array)));
return $insertQryStr;
}
调用 array_map
失败,因为 mysqli_real_escape_string
作为函数使用时需要 2 个参数,第一个是 mysqli $link
as per the documentation.
array_map
不知道将连接作为第一个参数传递。更好的方法来自 this answer.
要在您的函数中使用它,您需要将 link 传递给数据库。
function insertQryStr($array, $table, $link) {
array_walk($array, function(&$string) use ($link) {
$string = mysqli_real_escape_string($link, $string);
});
return sprintf("insert into %s (%s) values('%s')",
$table,
implode(", ", array_keys($array)),
implode("', '", $array)
);
}
虽然更好的办法是在调用insertQryStr()
之前调用insertQryStr()
以避免tight coupling.
话虽如此,您应该查看并确定使用 prepared statements
,而不是以这种方式手动转义数据