如何添加 lastInsertId()? [复制]
Posted
技术标签:
【中文标题】如何添加 lastInsertId()? [复制]【英文标题】:How do I add lastInsertId()? [duplicate] 【发布时间】:2012-09-19 11:37:12 【问题描述】:可能重复:Can't get mysql_insert_id() to work
我想在这个函数上使用 lastInsertId() 打印最后插入的 id:
private function adduser()
if (!empty($this->error)) return false;
$params = array(
':user_level' => parent::getOption('default-level'),
':name' => $this->name,
':email' => $this->email,
':username' => $this->username,
':password' => parent::hashPassword($this->password)
);
parent::query("INSERT INTO `login_users` (`user_level`, `name`, `email`, `username`, `password`)
VALUES (:user_level, :name, :email, :username, :password);", $params);
$shortcodes = array(
'site_address' => SITE_PATH,
'full_name' => $this->name,
'username' => $this->username,
'email' => $this->email,
'password' => $this->password
);
$subj = parent::getOption('email-add-user-subj');
$msg = parent::getOption('email-add-user-msg');
$cid = parent::lastInsertId();
if(!parent::sendEmail($this->email, $subj, $msg, $shortcodes))
$this->error = _('ERROR. Mail not sent');
$this->result = "<div class='alert alert-success'>" . sprintf(_('Successfully added user <b>%s</b> to the database. Credentials sent to user.'), $cid) . "</div>";
我已经添加了这个:
$cid = parent::lastInsertId();
然后在此处添加$cid:
$this->result = "<div class='alert alert-success'>" . sprintf(_('Successfully added user <b>%s</b> to the database. Credentials sent to user.'), $cid) . "</div>";
但我不断得到:
Fatal error: Call to undefined method Generic::lastInsertId() in
数据库连接如下所示:
public function dbConn()
include(dirname(__FILE__) . '/config.php');
try
self::$dbh = new PDO("mysql:host=$host;dbname=$dbName", $dbUser, $dbPass);
self::$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
catch (PDOException $e)
return '<div class="alert alert-error">'._('Database error: '). $e->getMessage() . '</div>';
我应该如何正确添加 lastInsertId() 的任何想法?
【问题讨论】:
您为 DB 使用的框架/类是什么? raina77ow,是的,因为我发现这与 mysql_insert_id() 无关,因为这是 PDO。 raina77ow,对不起,这不是 Magento,这是一个用户登录脚本,我试图通过添加 lastInsertId() 进行修改,但我无法让它工作。 您基本上需要的是在您的连接对象上调用 lastInsertId() 方法。从显示的 sn-ps 看起来它存储在self::$dbh
中,因此可能应该像这样使用它:self::$dbh->lastInsertId()
raina77ow,谢谢一百万,它奏效了,哇。你是我的英雄,再次感谢。
【参考方案1】:
替换
$cid = parent::lastInsertId();
与
self::$dbh->lastInsertId();
...因为(看起来)您的连接对象存储在我们正在讨论的这个匿名类的dbh
字段中。
【讨论】:
【参考方案2】:LastInsertID 是 PDO 类的方法。
您在 Generic
类上调用它,该类没有方法 LastInsertID();
【讨论】:
那我该如何正确称呼它呢? php.net/manual/en/pdo.lastinsertid.php 我试过 $cid = PDO::lastInsertId();而是得到了这个错误:致命错误:非静态方法 PDO::lastInsertId() 不能被静态调用,假设 $this 来自不兼容的上下文 in 不清楚您的代码中是否有可用的 PDO 对象?以上是关于如何添加 lastInsertId()? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
通过 lastInsertId() 获取 ID 是不是安全? [复制]
PDO 的 LastInsertID 会破坏 AWS 复制吗?