我是基于 PDO 的 MySQL 的新手,我遇到了一个问题。
这是我正在执行的方法:
public function insert( $table, $data )
{
// utility functions to auto-format the statements
$keys = $this->getKeys($data);
$placeholders = $this->getPlaceholders($data);
$q = "INSERT INTO $table ($keys) VALUES ($placeholders)";
// this simply returns a new PDO object
$dbh = $this->createSession();
$stmt = $dbh->prepare($q);
$stmt->execute( array_values($data) );
return $dbh->lastInsertId();
}
之后,我运行我的方法并将返回值存储在一个变量中:
$new_user_id = $U->insert( $data );
var_dump($new_user_id);
我明白了
NULL
注意 查询确实执行了,我的数据被正确地插入到我的表中;那边没问题。它似乎无法按照我的要求获取最后一个插入 ID。
感谢您的宝贵时间。
最佳答案
不确定任何特定于 PDO 的问题,但默认情况下,如果数据库中存在 auto_increment 整数字段(通常但不一定是主键),则 MySQL 仅返回插入 ID。如果您的表不包含此内容,则 $dbh->lastInsertId()
不会返回任何内容关于PHP、PDO 和 MYSQL : lastInsertId() returns NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15774403/