2013-08-26 45 views
0

我需要,我在PHP中使用PDO插入的最后一行。我一直在寻找,我发现PDO :: lastInsertId,但它不适用于Oracle。如何使用PDO获取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]: Invalid parameter number: mixed named and positional parameters

Notice: Undefined variable: id in D:\xampp\htdocs\Gestor\include\inserciones.inc on line 43

线43 return $id;

回答

2

您可以使用特定的神谕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。

+0

我添加这些代码行,但我得到的是一个错误信息。错误在哪里? –

0

一种选择是首先检索该序列的下一个值,然后在INSERT语句中使用它。

相关问题