->insert() – 現在のオブジェクト変数をデータベースに挿入する


mixed $DB_DataObject->insert ( )


現在のオブジェクトの偏す打ちに基づいたデータをデータベースに挿入し、 もし、シーケンスや主キーが使用される場合、挿入された要素のIDを返します。 値は完全にクオートされ、 いくつかの制限された型のチェックは行われています。

MySQLでは mysql_next_id() メソッドが使用され、 他のデータベースでは、PEAR DB の sequence メソッドが使用されます。

注意: insert() メソッドはいくつかの状況では ID を正しく返さないかも知れません。

  • データベースバックエンドがサポートしていない場合
  • 生成スクリプトが正しいカラムを自動インクリメント/nextvalとしてマークしなかった場合
  • 何らかのエラーが発生した場合 (デバッグモードで確認することができます)
  • 挿入に失敗、あるいは '0' 行に影響を与えた場合

Return value

mixed - Id あるいは キーを指定します。


Possible PEAR_Error values
エラーコード エラーメッセージ 意味 解決策
DB_DATAOBJECT_ERROR_NODATA "挿入:クエリにデータが指定されていません"    
DB_* * PEAR::DB を参照してください PEAR::DB を参照してください


This function can not be called statically.



= new DataObjects_Person;
$id $person->insert();

結果の SQL

(nameVALUES ('fred');
select count() リクエストを実行する (Previous) オブジェクト変数でデータベースを更新する (Next)
Last updated: Sat, 28 Nov 2015 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: del@babel.com.au
Here is how to fetch the error message:

$my_id = $my_object->insert();
if ($my_id) {
debug("I just inserted record ID " . $my_id);
} else {
$error = &PEAR::getStaticProperty('DB_DataObject','lastError');
$debug("DB_DataObject Error: " . $error->getMessage() );
Note by: nailz420@gmail.com
Is there a way to get the database error code and message? For example, I would like to be able to check for error code 1062 on duplicate key error in a mysql db. Where would that value be stored?
Note by: Charlie Shin
I spent at least 3 days to find out why there is extra table with additional "_seq" in my database. I finally realize it is created because sequenceKey(). I don't know why bother to find sequenceKey() if my table is no need sequence key? This feature should not set by flag or option, otherwise I have to manually add in return array(false, false) each time after if package upgrade?
Note by: pierre2543@hotmail.com
By default insert() will populate key fields automatically. If you want to manage your own keys, override sequenceKey() in your DO as follows:

function sequenceKey(){
return array(false,false);