php - 为什么 PDO::lastInsertId 返回 0?

标签 php mysql pdo lastinsertid

这是我的代码。

// insert reward into wallet
$sql = "
INSERT INTO `wallet` (`uid`, `created_at`, `amount`, `type`, `payment_id`) VALUES (:uid, CURRENT_TIMESTAMP, :amount, 'payment', :payment_id);
";
$sth = self::link()->prepare($sql); 
// primary key makes sure payment does not get double rewarded
$sth->execute(
    array(
    ':uid' => $referer,
    ':amount' => $reward,
    ':payment_id' => $payment_data['payment_id'],
    )
);
var_dump(self::link()->errorInfo());
self::log("issuing subscription",self::LOG_LEVEL_DEBUG);
// extend referers subscription
$tid = self::link()->lastInsertId();
var_dump(self::link()->errorInfo());
self::log("using $tid as id for wallet transfer",self::LOG_LEVEL_DEBUG);

我的日志说:

[2011-07-02 20:31:44] using 0 as id for wallet transfer

但是插入查询成功,数据库记录被创建并且两个 errorInfo 输出都没有错误。

最佳答案

从查询中删除分号或分号后的空格或两者:

$sql = "
INSERT INTO `wallet` (`uid`, `created_at`, `amount`, `type`, `payment_id`) VALUES (:uid, CURRENT_TIMESTAMP, :amount, 'payment', :payment_id)
";

关于php - 为什么 PDO::lastInsertId 返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6558885/

相关文章:

php - 我们如何解析字符串条件以在 if 语句中使用

php - PHP中的移位与乘法

php - laravel 5.7如何查看文件(使用多文件上传代码)以及如何编辑

php - 我的 MySQL 查询不起作用,没有任何内容进入数据库

php - MySQL 错误 2014 的原因在其他无缓冲查询处于事件状态时无法执行查询

未找到 PHP Laravel 类。如何使用命名空间来解决这个问题?

mysql - MySQL UPDATE 语句从字符串中删除非数字字符的正确语法是什么

php - 在数据库 MySQL 中使用 LIKE 运算符搜索 HTML

php - PDO 异常仅适用于 Laravel 中的 PostgreSQL 连接,但 artisan 命令有效

php - 在php中获取mysql用户定义的变量