возвращает id = 1 после вставки mysql - PullRequest
0 голосов
/ 07 декабря 2011

Сегодня я изменил MySQL на PDO. И теперь у меня есть эта маленькая проблема. Поэтому, когда я использовал mysql и хотел узнать идентификатор строки, которую я только что вставил, мне просто нужно было сделать это:

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

Когда я напечатал $ id, я получил: (например: 5462

Когда я сейчас использую ту же строку, я получаю 1 как 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 ]

2 голосов
/ 07 декабря 2011

Последний идентификатор автоматической вставки доступен через PDO :: lastInsertId , и вызываемый вами метод должен возвращать это значение;что-то вроде

class ... {
   public function insert(...) {
      ...
      return $this->pdo->lastinsertid();
   }
1 голос
/ 07 декабря 2011

С PDO вы не получите вновь вставленный идентификатор в результате запроса.Вместо этого используйте

PDO::lastInsertId

.В вашем случае это может выглядеть, например, так:

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

Проверьте http://www.php.net/manual/de/book.pdo.php для полного API PDO.

...