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

PDO lastInsertId()返回0
EN

Stack Overflow用户
提问于 2013-04-17 16:53:03
回答 2查看 954关注 0票数 0

我一直在寻找其他提出同样问题的问题,但我不明白为什么我的查询不会表现得像它应该的那样。

我的问题是:

代码语言:javascript
复制
$stmt = db()->prepare("INSERT INTO conversations (user1, user2) VALUES (?, ?)");
$stmt->execute(array($_SESSION['user']['userId'], $user));
echo db()->lastInsertId();

当我这样做的时候,lastInsertId();一直返回0。

我的db()函数:

代码语言:javascript
复制
function db()
{
    $dsn = 'mysql:host=localhost;dbname=message_board';
    $username = 'root';
    $password = 'root';

    try {
        $db = new PDO($dsn, $username, $password);
    } catch(PDOException $e) {
        // exceptions handles here
    }
    return $db;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-17 16:55:31

代码语言:javascript
复制
function db()
{
    static $db;

    $dsn = 'mysql:host=localhost;dbname=message_board';
    $username = 'root';
    $password = 'root';

    if (!$db) {
       $db = new PDO($dsn, $username, $password);
    }
    return $db;
}
票数 7
EN

Stack Overflow用户

发布于 2013-04-17 16:56:54

每行都会创建一个新的数据库连接。

尝试:

代码语言:javascript
复制
$db = db();
$stmt = $db->prepare("INSERT INTO conversations (user1, user2) VALUES (?, ?)");
$stmt->execute(array($_SESSION['user']['userId'], $user));
echo $db->lastInsertId();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16055671

复制
相关文章

相似问题

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