2011-03-07 7 views
0

Oracleに新しい文を挿入しようとしています。私の目的は、クリーンなSQLクエリを作成することです。Zend and oracle sequence

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アダプタ):

Message: SQLSTATE[HY000]: General error: 1722 OCIStmtExecute: ORA-01722: invalid number (ext\pdo_oci\oci_statement.c:146)

私は文字通り何も情報がないので、何が起こるかを把握することはできません

google =( アドバイスはありますか?

答えて

1

どうすればいいですか?

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

これで、ログインとパスワードをバインドして実行します。

+0

TNX、それが助けました! – Fluffy

0

あなたはあなたの順序の名前が何であるかをZendのを知らせることができます。

<?php 
class A extends Zend_Db_Table_Abstract 
{ 
    protected $_sequence = 'RK.EMP_SEQUENCE'; 
    ....