2011-04-26 63 views
2

如何正確地編寫一個MySQL查詢的代碼,這兩個implodes和mysql_real_escape_string?PHP的問題結合implode()和mysql_real_escape_string()

這是我的代碼,但它的失敗:

$sql = "INSERT INTO BEER_LOCATIONS 
     (LOCATION_NAME, LOCATION_STREET, LOCATION_CITY, LOCATION_STATE, 
     LOCATION_ZIPCODE, LOCATION_PHONE, BEER_STYLE) 
    VALUES 
     ('" . mysql_real_escape_string(implode("', '", $row)) . "')"; 

感謝

回答

10
implode("', '", array_map('mysql_real_escape_string', $row)) 

這適用mysql_real_escape_string的每個元素在$row,並返回轉義值implode數組。

0

即使這是一個非常古老的問題,谷歌仍然把我帶到這裏,所以也許我的解決方案將有助於別人:

當嘗試使用mysql_real_escape_string的MySQLi的版本,你會認識到array_map無法處理mysqli_real_escape_string所需的兩個參數。因此,你必須將它包裝在一個函數,只需要一個參數:

function arrayEscaper($val){ 
    global $link; 
    return mysqli_real_escape_string($link, $val); 
}; 

然後你可以使用該功能了在array_map像這樣:

$myArray = ["one", "two", "three"]; 
$myArrayEsc = array_map('arrayEscaper', $myArray); 
$myString = implode(", ", $myArrayEsc); 

希望這有助於。