2010-11-22 18 views
1

私はMysqlストアドプロシージャでKohana 3フレームワークを使用しています。最後に挿入されたレコードのIDを取得するにはどうすればよいですか? はここでは、コードは次のとおりinsert_id in Kohana 3

class Model_MyModel extends Kohana_Model 
{ 
    public function insertNew($param1, $param2) 
    { 
     $result = $this->_db->query(Database::INSERT, 'CALL insertNew('.$param1.', '.$param2.', false)'; 
     return $result; 
    } 
    ... 
    ... 
} 

ドキュメントは言う挿入クエリを実行する場合、クエリ()メソッドは、最後のインサートIDと影響を受けた行数と列を返します。私が呼ぶとき:ますprint_r($結果) 私が取得しています: アレイ ( [0] => 0 を[1] => 1 ) 私は多くのレコードを持っていてもINSERT_IDキーは、0でありますデータベース。 私は間違っていますか?

+1

プロシージャを使用しているためにinsert_idを取得できない理由は、Database :: INSERTでSQLを実行しようとしたことがありますか? – mikelbring

+0

これは、スクリプトでsqlを構築するときに機能します。ありがとうございます。しかし、ここで手続きを呼び出す方法はありませんか、それとも絶対不可能ですか? – skog

答えて

1

私はあなたがSQLのLAST_INSERT_ID()手順を使用して挿入した後を使用する必要がありますと思う:

SELECT LAST_INSERT_ID() as last_insert_id FROM table_name 

(あなたの手順で終了間際には、このクエリを定義します)。

この問題は、Kohanaが自動的にDatabase :: INSERTの結果としてmysql_insert_idとmysql_affected_rowsを返すため、SELECTクエリとしてプロシージャを呼び出してフェッチする必要があります(Database :: SELECT)。

+0

ありがとう、固定 - ) – skog