@justbefree

Запрос из php в ms sql?

из php отправляю запрос в базу ms sql, следующего вида:

$name = 'Текст текст текст текст "Некое название в кавычках"';
$sql = "SELETC * FROM Table WHERE Pole = '".$name."'";

в результате такого запроса ничего не получаю(

но если $name будет в виде 'Текст текст текст' или 'Текст текст текст «Текст в кавычках»' то запрос нормально отрабатывает.

Так же, если выполнить запрос напрямую в базе SELETC * FROM Table WHERE Pole = 'Текст текст текст текст "Некое название в кавычках"'. То он так же отработает правильно.

Очевидно проблема с двойными кавычками " ", но как ее решить?
  • Вопрос задан
  • 457 просмотров
Пригласить эксперта
Ответы на вопрос 3
OKyJIucT
@OKyJIucT
Sunshine reggae
Вместо
SELETC
надо
SELECT
А чтобы кавычки работали, используйте PDO. Но если уж совсем лень разбираться с PDO, то вот так

php.net/manual/ru/function.addslashes.php

$name = addslashes('Текст текст текст текст "Некое название в кавычках"');
$sql = "SELECT * FROM Table WHERE Pole = '".$name."'";
Ответ написан
Комментировать
@artem78
Нужно экранировать кавычки:
SELECT * FROM Table WHERE Pole = 'текст с \'кавычками\''

См. php.net/manual/ru/pdo.quote.php

А лучше использовать подстановку праметров: php.net/manual/ru/pdo.prepare.php#refsect1-pdo.pre...
Ответ написан
Комментировать
@karminski
Senior React.JS Developer
Поздравляю! Вы на собственном опыте узнали, что такое SQL-инъекция! Все данные, которые вы используете в запросах нужно приводить к безопасному виду. А лучше всего использовать PDO.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы