簡體   English   中英

mysqli_real_escape_string在array_map內部不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM