2011-04-26 59 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); 

希望这有助于。