Я работаю над выполнением этого 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. Когда я выполняю этот запрос, он возвращает ошибку, которую я написал в заголовке.
В моих таблицах db у меня есть некоторые значения, которые включают '|' характер, и из-за этого система дала мне такую ошибку.
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 Injection!
$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