ajax — PHP & amp; Запрос OCI возвращает столбцы NUMBER в виде STRING

Я использую PHP5 и OCI 8 с Oracle 11g.
Когда я выбираю строку, используя oci_fetch_all, весь результат конвертируется как STRING даже для NUMBER столбцы и даже если я использую Oracle TO_NUMBER в запросе.

То, что я пытаюсь сделать, просто: javascript вызывает скрипт PHP через запрос Ajax. Сценарий просто получить некоторые NUMBER данные и закодировать их в JSON. Я хочу, чтобы данные были закодированы как целое число, чтобы JavaScript мог выполнять математические операции с ними (добавлять, делить и т. Д.) Без какого-либо преобразования.

Я уверен, что проблема в OCI, а не в кодировке JSON, потому что когда я VAR_DUMP результат oci_fetch_all, я ясно вижу двойные кавычки на каждом результате:

{
"COLUMN1":"12",
"COLUMN2":"52"}

Я хочу, чтобы результат выглядел так:

{
"COLUMN1":12,
"COLUMN2":52
}

Я пытался:

  • Изменить флаг oci_fetch_all (OCI_FETCHSTATEMENT_BY_ROW, OCI_FETCHSTATEMENT_BY_COLUMN…)
  • использование oci_fetch_array вместо oci_fetch_all
  • Убрать кодировку UTF8 на связи с оракулом (я знаю, это глупо)

Странно то, что я не могу найти ничего в интернете об этой проблеме … Как будто никто не сталкивался с той же проблемой. Может я что-то не так делаю …

заранее спасибо

1

Решение

Вы можете использовать дополнительную опцию в json_encode:

json_encode($rows, JSON_NUMERIC_CHECK);

Однако для этой опции требуется версия PHP 5.3.3 или выше (так что это нормально для вас).

0

Другие решения

Все расширения баз данных в PHP работают так, с этим ничего не поделаешь.
Вам придется вручную приводить результаты в базе данных.

0

По вопросам рекламы [email protected]