1
这是我的代码。为什么PDO :: lastInsertId返回0?
// 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中输出给没有错误。
是表中的任何AUTO_INCREMENT领域?当你的表中存在一个auto_increment字段时,lastInsertId可以工作 –
也不需要在你的查询中使用分号......它绝对不是必需的,我甚至可能会使查询失败。你确定成功了吗? – prodigitalson
你钉了它,谢谢。如果你可以张贴这个答案,所以我可以upvote和接受。 –