Как использовать LIKE в Oracle с PHP - PullRequest
2 голосов
/ 04 апреля 2019

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

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

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

Предупреждение:oci_bind_by_name (): ORA-01036: недопустимое имя / номер переменной

Код 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);

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

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

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

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

$sql = "SELECT * FROM hotels WHERE lower(name) LIKE '%' || :term || '%'";
1 голос
/ 04 апреля 2019

Нельзя поместить параметр связывания внутрь литеральной строки 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...