Как использовать LIKE в оракуле с PHP

Я пытаюсь использовать простой оператор SQL с оператором LIKE. Этот оператор SQL работает на разработчике SQL, но не когда я пробую его на PHP.

SELECT * FROM hotels WHERE lower(name) LIKE '%luxury%';

Однако, когда я делаю то же самое в php, я получаю эту ошибку:

Warning: oci_bind_by_name(): ORA-01036: illegal variable name/number

PHP-код:

$sql = "SELECT * FROM hotels WHERE lower(name) LIKE '%:term%'";
$stid = oci_parse($conn, $sql);
$term = "luxury";
oci_bind_by_name($stid, ":term", $term);
oci_execute($stid);
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
394
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно будет объединить части строки с параметром, например:

$sql = "SELECT * FROM hotels WHERE lower(name) = '%' || :term || '%'";

NB: вы действительно хотите найти строку, окруженную буквальный'%'s? Учитывая название вопроса, вы можете вместо этого искать оператор LIKE:

$sql = "SELECT * FROM hotels WHERE lower(name) LIKE '%' || :term || '%'";

Спасибо. Это исправило это. Извините, я сделал опечатку в вопросе. Исправлена ​​ОП

Jake 04.04.2019 01:55

@Джейк: добро пожаловать! Если мой ответ правильно ответил на ваш вопрос, пожалуйста, принять это и проголосовать за это... Спасибо!

GMB 04.04.2019 01:56

К сожалению, это не позволяет мне выбрать его в качестве ответа (нужно подождать 6 минут). Но я выберу его, как только смогу

Jake 04.04.2019 01:57

Вы не можете поместить параметр привязки внутри литеральной строки SQL (''). Вы можете использовать LIKE '%' || :term || '%'";, как показано в другом ответе, или добавить % в свой PHP-код:

$sql = "SELECT * FROM hotels WHERE lower(name) LIKE :term";
$stid = oci_parse($conn, $sql);
$term = "%" . "luxury" . "%";
oci_bind_by_name($stid, ":term", $term);
oci_execute($stid);

Другие вопросы по теме