mysqli_real_escape_string Не работает внутри array_map

У меня есть функция для выполнения запроса вставки, но если я использую mysqli_real_escape_string это не ответ со значениями. Это проблема внутри карты массива, поэтому я не могу понять, как это решить.

Версия сервера: 5.6.24 — MySQL Community Server (GPL)

Моя функция:

function insertQryStr($array, $table){
$insertUrl = "insert into %s(%s) values('%s')";
$insertQryStr = sprintf($insertUrl, $table, implode(', ',@array_map('mysql_real_escape_string', @array_keys($array))), implode("', '",  @array_map('mysql_escape_string', $array)));
return $insertQryStr;
}

0

Решение

Призыв к array_map терпит неудачу, потому что mysqli_real_escape_string при использовании в качестве функции требуется 2 аргумента, первый mysqli $link согласно документации.

array_map не знает, чтобы передать соединение в качестве первого аргумента. Лучший метод будет из этот ответ.

Чтобы использовать это с вашей функцией, вам нужно передать ссылку на базу данных.

function insertQryStr($array, $table, $link) {
array_walk($array, function(&$string) use ($link) {
$string = mysqli_real_escape_string($link, $string);
});

return sprintf("insert into %s (%s) values('%s')",
$table,
implode(", ", array_keys($array)),
implode("', '", $array)
);
}

Хотя лучшей идеей было бы сделать это до призвание insertQryStr() как избежать тесная связь.

Сказав все это, вместо того, чтобы вручную экранировать данные таким образом, вы должны проверить и определенно использовать готовые заявления

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector