通过返回Oracle PDO_OCI php获取上次ID

时间:2011-10-18 18:20:31

标签: php oracle pdo

我可以使用RETURNING子句PDO_OCI吗?我被建议使用它来获取正在使用触发器更新的字段的最后一个ID。

我找到了一个使用oci_bind_by_name获取ID的教程,但这似乎是oci8驱动程序的一个功能。是否有与PDO_OCI中的oci_bind_by_name相似的内容?

$query = "INSERT INTO employees (name) VALUES ('Jones') RETURNING employee_no INTO     :employee_no";
stmt = oci_parse($dbh, $query);
oci_bind_by_name($stmt, ":employee_no", $employee_no, 8);

http://from8to5.blogspot.com/2011/03/oracle-php-returning-clause-statement.html

1 个答案:

答案 0 :(得分:1)

对于OUT参数,如果数据不是字符串(CHAR,VARCHAR2等),则应指定类型,即

// assuming employee_no is an integer
oci_bind_by_name($stmt, 'employee_no', $employee_no, 8, SQLT_INT);
oci_execute($stmt);

对于PDO,请使用PDOStatement::bindParam()

$stmt = $pdo->prepare($query);
$stmt->bindParam('employee_no', $employee_no, PDO::PARAM_INT, 8);
$stmt->execute();