Проблемы с PHP, объединяющие implode () с mysql_real_escape_string () - PullRequest
2 голосов
/ 26 апреля 2011

Как правильно написать код для запроса MySQL, который одновременно взорвется и 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)) . "')";

Спасибо

Ответы [ 2 ]

11 голосов
/ 26 апреля 2011
implode("', '", array_map('mysql_real_escape_string', $row))

Это применяется mysql_real_escape_string к каждому элементу в $row и возвращает массив с экранированными значениями в implode.

0 голосов
/ 18 апреля 2017

Несмотря на то, что это очень старый вопрос, Google все же привел меня сюда, поэтому, возможно, мое решение будет полезно кому-то еще:

При попытке использовать версию 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);

Надеюсь, это поможет.

...