gpt4 book ai didi

php - mysqli_real_escape_string 在 array_map 内不起作用

转载 作者:行者123 更新时间:2023-11-29 20:57:50 33 4
gpt4 key购买 nike

我有一个函数可以进行插入查询,但是如果我使用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 .

要将其与您的函数一起使用,您需要传入数据库的链接。

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()之前执行此操作以避免 tight coupling .

话虽如此,您应该检查并肯定使用 prepared statements,而不是以这种方式手动转义数据。

关于php - mysqli_real_escape_string 在 array_map 内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37490564/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com