Если вы прочитаете документацию для oci_result , вы обнаружите, что используете второй параметр неправильно.
Второй параметр - это то, что вы используете для извлечения столбца - это может быть имя столбца или порядковый номер. Порядковое значение - это число, начинающееся с единицы (1) в зависимости от столбцов, указанных в предложении SELECT. Порядковые числа не являются рекомендуемой практикой, потому что, если запрос изменяется - если вы забыли обновить порядковый номер, ваш поиск значений облажался. По сути, последующий запрос COUNT возвращает значение, превышающее число столбцов в первом предложении SELECT запросов.
$stid = oci_parse($conn, "SELECT Id
FROM test
ORDER BY LENGTH(Id), Id ASC");
oci_execute($stid);
$lastid = oci_result($stid, 1);
oci_result
не хватает третьего параметра, который предоставляет mysql_result
.
Чтобы заставить вещи работать в Oracle, используйте:
$stid = oci_parse($conn, "SELECT x.id
FROM (SELECT Id
FROM test
ORDER BY LENGTH(Id) DESC, Id DESC) x
WHERE ROWNUM = 1");
oci_execute($stid);
$lastid = oci_result($stid, 1);
Обновленный запрос вернет одну строку, последняя из которых основана на отмене ранее использованного ORDER BY
.