如何在oracle和PHP中使用LIKE

如何在oracle和PHP中使用LIKE,php,sql,database,oracle,Php,Sql,Database,Oracle,我正在尝试使用带有LIKE运算符的简单SQL语句。这个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%'

我正在尝试使用带有LIKE运算符的简单SQL语句。这个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);

您需要将字符串部分与参数连接起来,如:

$sql = "SELECT * FROM hotels WHERE lower(name) = '%' || :term || '%'";
注意:是否确实要搜索由literal
'%'
s包围的字符串?根据问题的标题,您可能正在寻找
LIKE
操作符:

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

不能将绑定参数放入SQL文本字符串(“”)中。您可以使用
如“%”| |: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);

谢谢。这就解决了。对不起,我在问题上打错了。解决了问题OP@Jake:欢迎!如果我的答案正确回答了您的问题,请…谢谢!不幸的是,它不允许我选择它作为答案(需要等待6分钟)。但我会选择它,一旦我可以