Member 13694776 Ответов: 2

Как добавить кавычки в запрос mysql?


У меня есть это
      if ($_POST["manufacturers"]) {
        $where = addWhere($where, "make IN (".htmlspecialchars(implode(",", $_POST["manufacturers"])).")");
      }
      $sql = "SELECT * FROM vehicles";
      if ($where) {
        $sql .= " WHERE $where";
      }
echo $sql;

mysql запрос который я получаю это:
SELECT * FROM vehicles WHERE make IN (Tesla,Ford);

Этот запрос не работает, потому что там нет кавычек. Пример ("Тесла","Форд").
Например, если бы значение столбца было числом, например id, то это сработало бы. Итак, как я могу добавить кавычки между значениями в круглых скобках?

Что я уже пробовал:

Попробовал изменить имя столбца и значения в скобках. Если значения внутри круглых скобок являются числами, то запрос работает.

2 Ответов

Рейтинг:
2

Member 13694776

$where = addWhere($where, "type IN (".htmlspecialchars(implode(",", array_map(function($string) {
return '"' . $string . '"';
  }, $data))).")");


Рейтинг:
0

Patrice T

Чтение документации-это первое, что нужно сделать, на этой странице есть 2 решения:
PHP: Strings - Manual[^]

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]