2011-12-07 76 views
0

今天我將mysql更改爲PDO。現在我有這個小問題。 所以,當我使用的MySQL,並想知道我剛插入的行的id我必須這樣做:插入mysql後返回id = 1

$id = $obj_db_write->insert("reservations",$arr_kolommen,$arr_waardes); 

當我打印的$ id我得到:(例如:) 5462

當我現在使用同一行時,我得到1作爲Id。

問題: 當插入線,其他列正在使用的ID爲其他表中添加字段。 所以現在我得到這個錯誤:

Warning: PDO::query() [pdo.query]: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1-double' for key 'RSVR_ID' in /data/local/www/wereldreizen/html/phpclasses/class_db.php on line 229

什麼是相當預期,因爲RSVR_ID爲1,1已插入。

有人知道我在哪裏錯了嗎? 在此先感謝!

回答

1

使用PDO,您不會從查詢中得到新插入的ID。使用

PDO::lastInsertId 

代替。就你而言,那可能是看起來像這樣:

$affectedRows = $obj_db_write->exec(your-insert-statement); 
$lastInsertedID = $obj_db_write->lastInsertId(); 

檢查出http://www.php.net/manual/de/book.pdo.php爲完整的PDO API。

+0

我發現我以前的錯誤:我寫lastinsertedId的lastinsertedId insead。但現在我有另一個警告:警告:PDO ::查詢()[pdo.query]:SQLSTATE [23000]:完整性約束違規: – user993177

+0

確定發現我的問題。 ($ this-> db-> query($ insert)){$ waarde = $ this-> db-> lastInsertId();我不得不寫下這個查詢。 return $ waarde;在而不是之前。 )感謝您的答案! – user993177

2

最後自動插入ID是通過PDO::lastInsertId和你調用應該返回值的方法可用;像

class ... { 
    public function insert(...) { 
     ... 
     return $this->pdo->lastinsertid(); 
    } 
+0

謝謝你的回答,但我仍然有一點問題。我現在有這個:$ waarde = $ this-> db-> lastinsertid;但我現在得到這個警告:注意:未定義的屬性:PDO :: $ lastinsertid。使用mysql很容易,我只需要使用:$ waarde = mysql_insert_id($ this-> db); – user993177

+0

對不起,忘了(),lastinsertid是一個方法(),看到更新回答 – VolkerK

+0

我用這個:$ waarde = $ this-> db-> lastInsertId();但是對於ID現在我得到0而不是1059 – user993177