- $query = sprintf("REPLACE INTO %s (%s, %s, %s) ".
- "VALUES('%s','%s','%s')",
- $this->table,
- $this->user_field,
- $this->key_field,
- $this->val_field,
- $this->dbh->quoteString($user),
- $this->dbh->quoteString($key),
- $this->dbh->quoteString($value));
-
- $res = $this->dbh->simpleQuery($query);
- if(DB::isError($res)) {
- $this->failQuery($res);
+ if ($this->db_type == SMDB_MYSQL) {
+ $query = sprintf("REPLACE INTO %s (%s, %s, %s) ".
+ "VALUES('%s','%s','%s')",
+ $this->table,
+ $this->user_field,
+ $this->key_field,
+ $this->val_field,
+ $this->dbh->quoteString($user),
+ $this->dbh->quoteString($key),
+ $this->dbh->quoteString($value));
+
+ $res = $this->dbh->simpleQuery($query);
+ if(DB::isError($res)) {
+ $this->failQuery($res);
+ }
+ } elseif ($this->db_type == SMDB_PGSQL) {
+ $this->dbh->simpleQuery("BEGIN TRANSACTION");
+ $query = sprintf("DELETE FROM %s WHERE %s='%s' AND %s='%s'",
+ $this->table,
+ $this->user_field,
+ $this->dbh->quoteString($user),
+ $this->key_field,
+ $this->dbh->quoteString($key));
+ $res = $this->dbh->simpleQuery($query);
+ if (DB::isError($res)) {
+ $this->dbh->simpleQuery("ROLLBACK TRANSACTION");
+ $this->failQuery($res);
+ }
+ $query = sprintf("INSERT INTO %s (%s, %s, %s) VALUES ('%s', '%s', '%s')",
+ $this->table,
+ $this->user_field,
+ $this->key_field,
+ $this->val_field,
+ $this->dbh->quoteString($user),
+ $this->dbh->quoteString($key),
+ $this->dbh->quoteString($value));
+ $res = $this->dbh->simpleQuery($query);
+ if (DB::isError($res)) {
+ $this->dbh->simpleQuery("ROLLBACK TRANSACTION");
+ $this->failQuery($res);
+ }
+ $this->dbh->simpleQuery("COMMIT TRANSACTION");
+ } else {
+ $query = sprintf("DELETE FROM %s WHERE %s='%s' AND %s='%s'",
+ $this->table,
+ $this->user_field,
+ $this->dbh->quoteString($user),
+ $this->key_field,
+ $this->dbh->quoteString($key));
+ $res = $this->dbh->simpleQuery($query);
+ if (DB::isError($res)) {
+ $this->failQuery($res);
+ }
+ $query = sprintf("INSERT INTO %s (%s, %s, %s) VALUES ('%s', '%s', '%s')",
+ $this->table,
+ $this->user_field,
+ $this->key_field,
+ $this->val_field,
+ $this->dbh->quoteString($user),
+ $this->dbh->quoteString($key),
+ $this->dbh->quoteString($value));
+ $res = $this->dbh->simpleQuery($query);
+ if (DB::isError($res)) {
+ $this->failQuery($res);
+ }