首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP::lastInsertId()返回0

PHP::lastInsertId()返回0
EN

Stack Overflow用户
提问于 2013-06-03 09:58:46
回答 2查看 4.5K关注 0票数 1

谢谢你看了这个,我找不到解决问题的答案.我不明白我在做什么与我发现的教程/建议不同:

SQL表

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `LastInsertID` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(150) NOT NULL,
  `email` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

PHP文件

代码语言:javascript
复制
<?php

// Connect to database
$user = "foo";
$pswd = "bar";

$db = new PDO( 'mysql:host=localhost;dbname=test', $user, $pswd );
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Prepare request
$rq = $db->prepare('INSERT INTO `LastInsertID` VALUES(NULL,:name,:email)');

// Begin and commit request
$db->beginTransaction();
$values = array('name'=>'Foo','email'=>'bar@baz.com');
$rq->execute($values);
$db->commit();

// Echo last ID
echo $db->lastInsertId();

?>

当它应该返回6时,它返回0。问题在哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-03 10:02:23

如果您在事务中,则必须在提交之前使用$db->lastInsertId()。即使回滚事务,id也会被“使用”或跳过,这就是为什么您不应该依赖于id才是顺序的。

票数 6
EN

Stack Overflow用户

发布于 2013-06-03 10:00:56

使用这个

代码语言:javascript
复制
INSERT INTO `LastInsertID` (name, email) VALUES(:name,:email)

相反,

代码语言:javascript
复制
INSERT INTO `LastInsertID` VALUES(NULL,:name,:email)

我已经删除了NULL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16894155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档