Ошибка запроса PHP Laravel с зарезервированными ключевыми словами в фрагменте, вызывающая проблемы с синтаксисом SQLPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка запроса PHP Laravel с зарезервированными ключевыми словами в фрагменте, вызывающая проблемы с синтаксисом SQL

Сообщение Anonymous »

У меня возникла проблема в Laravel, из-за которой определенные ключевые слова (например, «И» в фрагменте названия фильма) интерпретируются как синтаксис SQL в предложенииwhere. Это приводит к сбою запроса, когда я пытаюсь получить запись по ее фрагменту. Вот упрощенная версия моего запроса:

Код: Выделить всё

$listing = Post::where('slug', $slug)
->where('status', 'publish')
->where('type', 'movie')
->firstOrFail();
Когда $slug содержит ключевые слова типа «AND», MySQL неправильно интерпретирует значение slug, вызывая ошибки. Вот пример необработанного вывода SQL, вызывающего проблемы:

Код: Выделить всё

SELECT * FROM `posts` WHERE `slug` = and-there-were-4 AND `status` = publish AND `type` = movie LIMIT 1
Как вы можете видеть выше, я использовал Laravel Eloquent или построитель запросов, но sql-запрос, который он возвращает, имеет ошибку, вызывающую "Попытка прочитать свойство «slug» по нулевому значению», пока доступен пул, но он распознает «и» как часть запроса sql вместо пула
В этом случае and-there-were-4 следует рассматривать как одну строку в фрагменте, но вместо этого MySQL интерпретирует ее как часть синтаксиса запроса.
Я пробовал p>

Код: Выделить всё

$listingQuery = Post::where('slug', '=', $slug)
->where('status', '=', 'publish')
->where('type', '=', 'movie');
Но результат останется тем же
Я ожидаю, что значение будет интерпретироваться как одна строка без неправильной интерпретации MySQL каких-либо ключевых слов. может содержать. В идеале я бы хотел, чтобы Laravel справился с этим самостоятельно, без ручной настройки SQL.

Подробнее здесь: https://stackoverflow.com/questions/791 ... tax-issues
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»