Oci_bind_by_name与like子句一起使用时不起作用


Oci_bind_by_name is not working when using it with like clause

我正试图使用oci_bind_by_name将php变量绑定到sql语句中,但它不起作用,这是我的代码

     $keyword="'%test%'";
     $stmt=oci_parse($connection,"SELECT *  
     FROM tableName where id=:id and (dataDetails like :key1 or  textData like :key1 or  name like :key1) and lang = :lang ");
           oci_bind_by_name($stmt, ':id', $id);
           oci_bind_by_name($stmt, ':key1', $keyword);
           oci_bind_by_name($stmt, ':lang', $lang);
           oci_execute($stmt, OCI_DEFAULT);

拿到$1ST后,它什么也没给我。怎么了?有什么帮助吗?

您需要在没有单引号的情况下绑定您的值,然后连接您的绑定值以进行类似的比较:

 $keyword="test";
 $stmt=oci_parse($connection,"SELECT *  
 FROM tableName where id=:id and (dataDetails like '%' || :key1 || '%' or  textData like '%' || :key1 || '%' or  name like '%' || :key1 || '%') and lang = :lang ");
       oci_bind_by_name($stmt, ':id', $id);
       oci_bind_by_name($stmt, ':key1', $keyword);
       oci_bind_by_name($stmt, ':lang', $lang);
       oci_execute($stmt, OCI_DEFAULT);