SQL 错误,警告:`oci_execute()`:ORA-00996:连接运算符是 ||,不是 |在 C:\wa

SQL Error, Warning: `oci_execute()`: ORA-00996: the concatenate operator is ||, not | in C:\wa

我努力执行这个sql

$tarifekatalogcwsql=oci_parse($conn,'select TARIFE_ID, HIZMET_TURU, ALT_HIZMET_TURU, KAYIT_TARIHI, OM_TARIFE_ID from SMARTTBILL.TARIFE_KATALOG_CW 
        WHERE HIZMET_TURU='.$rowisemriabonecw[0].' AND ALT_HIZMET_TURU='.$rowisemriabonecw[1].' AND OM_TARIFE_ID='.$rowisemriabonecw[4].'');

你可以只考虑sql语句。当我执行这个查询时,我在 header.

中写的 returns 错误

在我的数据库表中,我有一些包含“|”的值性格,因此,系统给了我这样的错误。

OM_TARIFE_ID='.$rowisemriabonecw[4].'这就是问题的根源。 OM_TARIFE_ID='1|1' $rowisemriabonecw[4]='1|1' 两者相同,但系统认为“|”作为连接字符串的字符。

你能帮忙处理那个案子吗?我该如何处理这个问题?

试试这个:

$tarifekatalogcwsql=oci_parse(
    $conn,
    'select TARIFE_ID, HIZMET_TURU, ALT_HIZMET_TURU, KAYIT_TARIHI, OM_TARIFE_ID from SMARTTBILL.TARIFE_KATALOG_CW WHERE '
    .'HIZMET_TURU = "' . $rowisemriabonecw[0] . '" AND '
    .'ALT_HIZMET_TURU = "' . $rowisemriabonecw[1] . '" AND '
    .'OM_TARIFE_ID = "' . $rowisemriabonecw[4] . '"'
);

但是你的方法是制作SQL注入的最简单方法!

这是正确的做法:

$tarifekatalogcwsql=oci_parse(
    $conn,
    'SELECT TARIFE_ID, HIZMET_TURU, ALT_HIZMET_TURU, KAYIT_TARIHI, OM_TARIFE_ID '
    .' FROM SMARTTBILL.TARIFE_KATALOG_CW '
    .'WHERE HIZMET_TURU = :HIZMET_TURU '
    .'  AND ALT_HIZMET_TURU = :ALT_HIZMET_TURU '
    .'  AND OM_TARIFE_ID = :OM_TARIFE_ID'
);

oci_bind_by_name($tarifekatalogcwsql, ":HIZMET_TURU", $rowisemriabonecw[0]);
oci_bind_by_name($tarifekatalogcwsql, ":ALT_HIZMET_TURU", $rowisemriabonecw[1]);
oci_bind_by_name($tarifekatalogcwsql, ":OM_TARIFE_ID", $rowisemriabonecw[4]);

文档:oci-bind-by-name