2

如何正确编写同时内爆和 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)) . "')";

谢谢

4

2 回答 2

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

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

于 2011-04-26T01:29:49.997 回答
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);

希望这可以帮助。

于 2017-04-18T15:59:25.030 回答