Получение последнего введенного ROWID в PHP/OCI

Можно ли получить идентификатор строки последней вставленной строки Oracle в PHP? Я пытался:

$statement = oci_parse($conn, "INSERT INTO myTable (...) VALUES ( ...)");
$results = oci_execute($statement);
while($row = oci_fetch_assoc($statement)) {
    $rowid = $row['ROWID'];
}

Без удачи. Я получаю определение ошибки, не выполненное перед извлечением или выполнением и извлечением в строке извлечения.

1 ответ

Решение

Объявляет:

$var = "AAAV1vAAGAAIb4CAAC";

Использование:

INSERT INTO myTable (...) VALUES ( ...)
RETURNING RowId INTO :p_val

Свяжите вашу переменную с переменной PHP:

oci_bind_by_name($statement, ":p_val", $val, 18);

Поскольку предыдущий ответ был для меня не совсем понятным, поскольку в нем отсутствует важная информация, я укажу на аналогичный подход.

В своем операторе SQL добавьте RETURNING INTOпункт.

$statement = oci_parse($conn, "INSERT INTO myTable (...) VALUES ( ...) RETURNING ID INTO :id");

Вот IDэто имя столбца, который вы хотите вернуть. Перед выполнением$statement, вам необходимо привязать переменную PHP к возвращаемому значению. Здесь я использовал$returnId (вам не нужно объявлять это заранее или назначать какое-либо значение по умолчанию).

oci_bind_by_name($statement, ":id", $returnId);

Только после привязки переменной оператор может быть выполнен.

$success = @oci_execute($statement);

$returnId теперь имеет значение ID столбец вставлен ранее.

Другие вопросы по тегам