2011-03-07 21 views
0

我試圖向Oracle插入一條新語句。我的目標是創建乾淨的SQL查詢。Zend和oracle序列

我有一個包含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)

我無法弄清楚發生了什麼,因爲在字面上沒有資料谷歌=( 任何意見?

回答

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'; 
    ....