1

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

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

ドキュメントによると、query()メソッドは、挿入クエリを実行すると、最後の挿入IDと影響を受ける行番号を持つ配列を返します。print_r($ result)を呼び出すと、次のようになります。配列([0] => 0 [1] => 1)データベースに多くのレコードがありますが、insert_idキーは0です。私が間違っているのは何ですか?

4

1 に答える 1

1

LAST_INSERT_ID()プロシージャを使用して挿入した後、SQLを使用する必要があると思います。

SELECT LAST_INSERT_ID() as last_insert_id FROM table_name

(プロシージャでは、最後にこのクエリを定義するだけです)。

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

于 2010-11-23T09:16:37.587 に答える