首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDO lastInsertId();发布php

PDO lastInsertId();发布php
EN

Stack Overflow用户
提问于 2012-09-26 06:48:28
回答 1查看 5K关注 0票数 6

我有一个具有父、子关系的数据库。我需要先插入父表,然后获取ID,然后再将数据插入子表。

下面是我用来插入数据库的代码片段。这是我第一次使用PDO类。我得到的错误;未定义的属性:调用非对象数据库上的成员函数lastInsertId()::$db。我必须承认,我对PHP相当陌生。谢谢

代码语言:javascript
复制
{

    public function __construct($DB_TYPE, $DB_HOST, $DB_NAME, $DB_USER, $DB_PASS)
    {
        parent::__construct($DB_TYPE.':host='.$DB_HOST.';dbname='.$DB_NAME, $DB_USER, $DB_PASS);
}

代码语言:javascript
复制
$this->db = new database(DB_TYPE, DB_HOST, DB_NAME, DB_USER, DB_PASS);

代码语言:javascript
复制
    $this->db->insert('images', array(
        'image_userID' => $data['image_userID'],
        'image_date' => $data['image_date']
    ));

代码语言:javascript
复制
/**
 * insert
 * @param string $table A name of table to insert into
 * @param string $data An associative array
 */
public function insert($table, $data)
{
    $fieldNames = implode('`, `', array_keys($data));
    $fieldValues = ':' . implode(', :', array_keys($data));

    $sth = $this->prepare("INSERT INTO $table (`$fieldNames`) VALUES ($fieldValues)");

    foreach ($data as $key => $value) {
        $sth->bindValue(":$key", $value);
    }

    $sth->execute();

$result= $this->db->lastInsertId();
 return $result;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-26 06:51:19

最后一个insert ID来自active语句,而不是来自数据库句柄。因此,将代码的最后一行更改为:

代码语言:javascript
复制
$return = $sth->lastInsertId();
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12596058

复制
相关文章

相似问题

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