PHP、PDO 和 MYSQL : lastInsertId() returns NULL

标签 php mysql sql pdo

我是基于 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/

相关文章:

php - Doctrine 2,HINT_FORCE_PARTIAL_LOAD 不会获取连接的实体

php - 将 span 标签放入特定的 WooCommerce 结帐字段包装 html 标签内

php - 日期和时间未插入我的 sql 数据库中

MySQL 两个表的交集

php - 将mysql转换为laravel 5 eloquent(用select左连接)

mysql - 需要帮助查找多个标记名的位置

PHP sql命令只是清除数据库表?

php - 使用新值更新联结表

sql - Oracle SQL Developer - 无法看到表

php - nginx 可以提供 PHP 缓存的文件吗?