2

何らかの理由で、インサートLastInsertIdから を取得できません。PDO何も返されません。挿入クエリが実行されていないため、実行内に配置すると-1が返されます。ただし、最後に挿入された ID を取得するために実行した直後には、何も返されません。

php 5.1.6
PECL pdo = 0.1.0

私は次の質問と他の多くのスタック交換の質問を見てきました。

  1. Postgresql で lastInsertId が機能しない
  2. PDO lastInsertId() は 0 を返します
  3. PDO lastInsertId の問題、php

ただし、違いは 0 と比較して何も返されないことです。エラーも記録されません。以下のコードを参照してください。

繋がり

try {
  $conn = new PDO("pgsql:host=localhost port= dbname=", "", "");
  echo "PDO connection object created";
}
catch(PDOException $e) {
  echo $e->getMessage();
}

最後のIDを挿入/返す

$stmt = $conn ->prepare("INSERT INTO sheet_tbl (site_id,  username, additionalvolunteers) VALUES(?,?,?)"); 
$stmt->bindParam(1,$site_id);
$stmt->bindParam(2,$username1);
$stmt->bindParam(3,$additionalvolunteers);
$site_id = $_POST['site_id'];   
$username1 = $user->name;
$additionalvolunteers = $_POST['additionalvolunteers'];
$stmt ->execute();
$newsheetID = $conn->lastInsertId('sheet_id');
echo $newsheetID . "last id"; 
4

3 に答える 3

0

sheet_id タイプがSERIALであると仮定すると、使用できますLASTVAL()

TRY (postgresql を持っていないため、テストされていません)

$newsheetID = $conn->query("SELECT LASTVAL()");
echo $newsheetID . "last id"; 
于 2013-09-09T20:46:30.843 に答える