0

我需要获取在 PHP 中使用 PDO 插入的最后一行。我一直在搜索,发现 PDO::lastInsertId 但它不适用于 Oracle。

我有什么选择?其他方法可以做到这一点?我想使用 PDO 获取序列的当前值(在该表中,我使用序列来增加 ID),但我不知道是否可以。

更新1:

这是我的代码。

static function insertarProveedor($name, $address, $phone, $email) {
    $con = conexionBD();
    try {
        $stmt = $con->prepare("INSERT INTO Proveedores (NOMBRE, DIRECCION, TELEFONO, EMAIL) VALUES (?, ?, ?, ?)
                        RETURNING OID_PROVEEDOR INTO :id");
        $stmt->bindParam(1, $nombre);
        $stmt->bindParam(2, $direccion);
        $stmt->bindParam(3, $telefono);
        $stmt->bindParam(4, $correo);
        $stmt->bindParam('OID_PROVEEDOR', $id, PDO::PARAM_INT, 8);
    } catch (PDOException $e) {
        echo "Error".$e->GetMessage();
    }
    return $id;
}

我收到以下消息错误:

ErrorSQLSTATE[HY093]:无效参数号:混合命名参数和位置参数

注意:未定义变量:第 43 行 D:\xampp\htdocs\Gestor\include\inserciones.inc 中的 id

第 43 行是return $id;

4

2 回答 2

2

您可以使用 oracle 特定的returning id into var方法

$query = "INSERT INTO employees (name) VALUES ('Jones') RETURNING employee_no INTO     :employee_no";
$stmt = $pdo->prepare($query);
$stmt->bindParam('employee_no', $employee_no, PDO::PARAM_INT, 8);
$stmt->execute();

然后$employee_no将有最后一个ID。

于 2013-08-26T10:15:47.833 回答
0

一种替代方法是首先从序列中检索下一个值,然后在插入语句中使用它。

于 2013-08-26T11:33:21.110 回答