Я использую 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
Странно то, что я не могу найти ничего в интернете об этой проблеме … Как будто никто не сталкивался с той же проблемой. Может я что-то не так делаю …
заранее спасибо
Вы можете использовать дополнительную опцию в json_encode:
json_encode($rows, JSON_NUMERIC_CHECK);
Однако для этой опции требуется версия PHP 5.3.3 или выше (так что это нормально для вас).
Все расширения баз данных в PHP работают так, с этим ничего не поделаешь.
Вам придется вручную приводить результаты в базе данных.