Support last insert id via Database class
[infodrom/hallinta] / class / database.class.php
index 2aa1a81..084c062 100644 (file)
@@ -4,6 +4,7 @@ class Database {
   private $db;
   private $error_log = false;
   private $error_mail = false;
+  private $lastInsertTable = null;
 
   public function __construct($driver, $host, $dbname, $user, $passwd)
   {
@@ -81,7 +82,10 @@ class Database {
 
   public function lastInsertId()
   {
-    return $this->db->lastInsertId();
+    if (DBDRIVER == 'pgsql')
+      return $this->db->lastInsertId($this->lastInsertTable);
+    else
+      return $this->db->lastInsertId();
   }
 
   public function query($sql)
@@ -91,6 +95,9 @@ class Database {
 
     if ($sth === false) $this->handleError($sth,$sql);
 
+    if (preg_match('/INSERT\s+INTO\s+(\S+)\s+/i', $sql, $matches))
+      $this->lastInsertTable = $matches[1];
+
     return $sth;
   }