PHP,PDO& MYSQL:lastInsertId()返回NULL

时间:2013-04-02 21:07:49

标签: 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,因为我要求它。

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

不确定任何特定于PDO的问题,但默认情况下,如果数据库中存在auto_increment整数字段(通常但不一定是主键),MySQL仅返回插入ID。如果您的表不包含此内容,则$ dbh-> lastInsertId()

将返回任何内容

答案 1 :(得分:0)

我再次查看了代码,发现由于没有将值正确传递给顶层方法的中间方法,我的值没有返回。

检查来源的值显示没问题。

感谢您的回复。