[英]mysqli_real_escape_string Not working inside array_map
我有一個進行插入查詢的功能,但是如果我使用mysqli_real_escape_string
它不會響應值。 這是數組映射內部的問題,所以我不知道如何解決這個問題。
服務器版本:5.6.24-MySQL社區服務器(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
(根據文檔) 。
array_map
不知道將連接作為第一個參數。 一個更好的方法是從這個答案 。
要將其與您的函數一起使用,您需要傳遞一個指向數據庫的鏈接。
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()
之前執行此操作,以避免緊密耦合 。
說了這么多,您應該檢出並肯定使用准備好的語句 ,而不是用這種方式手動轉義數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.