Ошибка SQL, предупреждение: `oci_execute ()`: ORA-00996: оператор конкатенации ||, а не | в C: \ wa

1

Я работаю над выполнением этого 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' оба одинаковы, но система считает '|' символ как строка конкатенации.

Можете ли вы помочь в этом случае? Как я могу решить эту проблему?

Теги:
concatenation

1 ответ

3
Лучший ответ

Попробуй это:

$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

  • 0
    Мне не нужно впрыскивать sql, потому что это небольшой справочный инструмент для меня, и пользователь db только что имеет права на чтение. Спасибо за помощь, она отлично работает.
  • 0
    @ MehmetAkifGüzey Разрешение на чтение может также предоставить доступ к другой, возможно, опасной информации. Лучше всего использовать правильный шаблон ВСЕГДА

Ещё вопросы

Сообщество Overcoder
Наверх
Меню