如何正确编写内爆和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)) . "')";
由于
答案 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);
希望这有帮助。