2013-08-26 50 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語句中使用它。

相關問題