PHP问题将implode()与mysql_real_escape_string()结合起来

时间:2011-04-26 00:39:47

标签: php mysql-real-escape-string implode

如何正确编写内爆和mysql_real_escape_string的MySQL查询代码?

这是我的代码,但它失败了:

$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)) . "')";

由于

2 个答案:

答案 0 :(得分:11)

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

这会将mysql_real_escape_string应用于$row中的每个元素,并将带有转义值的数组返回到implode

答案 1 :(得分:0)

即使这是一个非常古老的问题,谷歌仍然把我带到了这里,所以也许我的解决方案对其他人有帮助:

当尝试使用MySQLi版本的mysql_real_escape_string时,你会发现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);

希望这有帮助。