lastInsertId总是在PostgreSQL中返回FALSE

时间:2015-05-18 03:34:47

标签: php postgresql pdo

我正在尝试插入一行并将其主键作为输出。但是,当我使用lastInsertId()时,我总是得到False作为输出。

以下是代码段。你能不能告诉我哪里错了?

$host        = "host=localhost";
$port        = "port=5432";
$dbname      = "dbname=TestDB";
$credentials = "user=Admin password=Admin";

// Connecting, selecting database
// $dbconn = pg_connect("$host $port $dbname $credentials") or die('Could not connect: ' . pg_last_error());
$conn = new PDO("pgsql:dbname=webdev;host=localhost;port=5432", 'postgres' , 'rameshnr');

// $userName = $_GET['userName'];
// $userComment = $_GET['userComment'];

$userID = 'B101';
$parentComment = 0;
$commentText = 'Test Comment';

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("INSERT INTO table_Comments(userID, parentComment, commentText) VALUES (:userID, :parentComment, :commentText)");

$stmt->bindParam(':userID', $userID, PDO::PARAM_STR, 32);
$stmt->bindParam(':parentComment', $parentComment, PDO::PARAM_INT);
$stmt->bindParam(':commentText', $commentText, PDO::PARAM_STR, 500);    


$stmt->execute();

$result= $conn->lastInsertId();

echo "$result";

1 个答案:

答案 0 :(得分:4)

手册说明:

  

返回最后插入的行的ID,或序列对象中的最后一个值,具体取决于底层驱动程序。例如,PDO_PGSQL要求您为name参数指定序列对象的名称。

您需要传递序列对象作为Postgresql的参数。