我正在寻找“如何在执行前通过PDO获取自动增量ID”的解决方案,有没有办法在pdo中获取未来的ID。
我尝试过lastinsertID,但只能在'执行'之后。
在下面找到原文:
$last_id = $dbh->lastInsertId(); //last insert ID
我的PDO查询
$insert = $dbh->prepare('INSERT INTO _gegevensgebruiker (id, company, name, adress, zipcode, city, tel, email, employees, representative, email_re, function, date_end, user, `date_add`) VALUES (NULL, :company, :name, :adress, :zipcode, :city, :tel, :email, :employees, :representative, :email_re, :function, :date_end, :meid, NOW())');
我知道获取last_id的方法,但我需要一个解决方案来获取PDO语句中的未来ID。
在PDO声明之外的我的instert_ID解决方案下面:
$lastusers_sql = $dbh->prepare('SELECT MAX(id) FROM users');
$lastusers_sql->execute();
$last_id = $lastusers_sql->fetchColumn();
答案 0 :(得分:1)
您可以使用SELECT MAX()进行INSERT:
INSERT INTO table1
(id, column1, column2)
(SELECT (MAX(id)+1), 'value1', 'value2' FROM table1)
并使用您想要的值增加ID列。
答案 1 :(得分:-1)
$insert = $dbh->prepare('INSERT INTO _gegevensgebruiker ((SELECT MAX(id)+1), company, name, adress, zipcode, city, tel, email, employees, representative, email_re, function, date_end, user, `date_add`) VALUES (NULL, :company, :name, :adress, :zipcode, :city, :tel, :email, :employees, :representative, :email_re, :function, :date_end, :meid, NOW())');
答案 2 :(得分:-1)
创建UID。
$uid = '123#!';
// $dbh->execute();
$lastId = $uid;
不要在autoincr上设置你的id列。否则它不起作用。