0

我正在尝试向 Oracle 插入一条新语句。我的目标是创建干净的 sql 查询。

我有一个包含 ID、用户名、密码的表。我有以下代码

$sql = 'insert INTO EMPLOYEES (ID, LOGIN, PASSWORD) VALUES (:seq,  :login, :pass)';
$stmt = new Zend_Db_Statement_Pdo_Oci(Zend_Registry::get('db'), $sql);
$stmt->execute(array(':seq' => new Zend_Db_Expr('RK.EMP_SEQUENCE.NEXTVAL'),':login' => 'sss', ':pass' => 's'));

(注册表存储 oci_pdo 适配器)

但它给了我:

消息:SQLSTATE[HY000]:一般错误:1722 OCIStmtExecute:ORA-01722:无效编号(ext\pdo_oci\oci_statement.c:146)

我不知道会发生什么,因为 google=( 有什么建议吗?

4

2 回答 2

1

这样做怎么样:

$sql = 'insert INTO EMPLOYEES (ID, LOGIN, PASSWORD) VALUES (RK.EMP_SEQUENCE.NEXTVAL,  :login, :pass)';

现在只需绑定登录名和密码并执行。

于 2011-03-08T00:34:25.310 回答
0

你可以告诉 Zend 你的序列的名字是什么:

<?php
class A extends Zend_Db_Table_Abstract
{
    protected $_sequence = 'RK.EMP_SEQUENCE';
    ....
于 2013-03-20T17:37:59.723 回答