插入mysql后返回id = 1

时间:2011-12-07 14:40:42

标签: php mysql insert pdo

今天我将mysql更改为PDO。现在我有这个小问题。 所以,当我使用mysql,并想知道我刚刚插入的行的id时,我只需要这样做:

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

当我打印出我得到的$ id时:(例如:) 5462

当我现在使用相同的行时,我得到1作为Id。

问题: 插入行时,其他列正在使用该ID在其他表中添加字段。 所以现在我收到了这个错误:

  

警告PDO::query() [pdo.query]: SQLSTATE[23000]:   完整性约束违规:1062密钥'1-double'的重复条目'RSVR_ID'   在/data/local/www/wereldreizen/html/phpclasses/class_db.php 229

由于RSVR_ID为1,已经插入了1,因此非常期待。

有人知道我哪里错吗? 提前谢谢!

2 个答案:

答案 0 :(得分:2)

最后一个自动插入ID可通过PDO::lastInsertId获得,您正在调用的方法应返回该值;

之类的东西
class ... {
   public function insert(...) {
      ...
      return $this->pdo->lastinsertid();
   }

答案 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。