【问题标题】:oci_bind_by_name doesn't work with LIKE clauseoci_bind_by_name 不适用于 LIKE 子句
【发布时间】:2015-05-27 16:14:24
【问题描述】:

我的代码是这样的:

$s = ociparse($conn, "SELECT u.email, u.city FROM tickets t, users u WHERE t.userId = u.userId AND u.city LIKE '%:city%'");
$city = $_GET['city'];
oci_bind_by_name($s, ":city", $city);

显然,它不能代替“:city”

我收到的警告:

警告:oci_bind_by_name(): ORA-01036: 第 41 行 C:\xampp\htdocs\phpOracle\tickets.php 中的变量名称/编号非法

【问题讨论】:

  • 绑定变量不是字符串文字的一部分。 SELECT u.email, u.city FROM tickets t, users u WHERE t.userId = u.userId AND u.city LIKE :city;
  • 是的,我也试过了,但我希望它像正则表达式一样工作...之前的任何东西...myString...之后的任何东西
  • 试试ELECT u.email, u.city FROM tickets t, users u WHERE t.userId = u.userId AND u.city LIKE '%' || :city || '%';
  • 成功了,非常感谢!!你救了我的一天! :)

标签: bind sql-like oracle-call-interface


【解决方案1】:

你需要像这样绑定它,你必须用它连接 % 符号,你不能用单引号包裹你的绑定变量:

$s = ociparse($conn, "SELECT u.email, u.city FROM tickets t, users u WHERE t.userId = u.userId AND u.city LIKE '%' || :city || '%'");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多