Получение последнего введенного 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
столбец вставлен ранее.