Я пытаюсь использовать простой оператор 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);






Вам нужно будет объединить части строки с параметром, например:
$sql = "SELECT * FROM hotels WHERE lower(name) = '%' || :term || '%'";
NB: вы действительно хотите найти строку, окруженную буквальный'%'s? Учитывая название вопроса, вы можете вместо этого искать оператор LIKE:
$sql = "SELECT * FROM hotels WHERE lower(name) LIKE '%' || :term || '%'";
@Джейк: добро пожаловать! Если мой ответ правильно ответил на ваш вопрос, пожалуйста, принять это и проголосовать за это... Спасибо!
К сожалению, это не позволяет мне выбрать его в качестве ответа (нужно подождать 6 минут). Но я выберу его, как только смогу
Вы не можете поместить параметр привязки внутри литеральной строки 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);
Спасибо. Это исправило это. Извините, я сделал опечатку в вопросе. Исправлена ОП