1

我对基于 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。

谢谢你的时间。

4

2 回答 2

1

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

于 2013-04-02T21:21:20.200 回答
0

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

从源头检查值显示没有问题。

无论如何感谢您的回复。

于 2013-04-03T13:24:40.797 回答