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 に答える