0

我一直在寻找其他相同的问题,但无法弄清楚为什么我的查询不会像它应该的那样运行。

我的查询:

$stmt = db()->prepare("INSERT INTO conversations (user1, user2) VALUES (?, ?)");
$stmt->execute(array($_SESSION['user']['userId'], $user));
echo db()->lastInsertId();

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

我的 db() 函数:

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;
}
4

2 回答 2

7
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;
}
于 2013-04-17T08:55:30.890 回答
1

您正在每行创建一个新的数据库连接。

尝试:

$db = db();
$stmt = $db->prepare("INSERT INTO conversations (user1, user2) VALUES (?, ?)");
$stmt->execute(array($_SESSION['user']['userId'], $user));
echo $db->lastInsertId();
于 2013-04-17T08:56:54.333 回答