如何在PHP中使用oracle中的LIKE

I am trying to use a simple SQL statment with the LIKE operator. This SQL statement works on SQL developer but not when I try it on PHP.

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

However when I do the same thing in php I get this error:

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

PHP Code:

$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);

You would need to concatenate the string parts with the parameter, like :

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

NB: do you really want to search for a string surrounded by litteral '%'s? Given the title of the question, you might be looking for the LIKE operator instead:

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

You can't put a bind parameter inside of a SQL literal string (''). You can use LIKE '%' || :term || '%'"; as shown in the other answer, or you can append % in your PHP code:

$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);