diff --git a/dibi/dibi.php b/dibi/dibi.php index 317c0610..92b8da8d 100644 --- a/dibi/dibi.php +++ b/dibi/dibi.php @@ -42,6 +42,7 @@ require_once __FILE__ . '/../libs/DibiResult.php'; require_once __FILE__ . '/../libs/DibiResultIterator.php'; require_once __FILE__ . '/../libs/DibiTranslator.php'; require_once __FILE__ . '/../libs/DibiLogger.php'; +require_once __FILE__ . '/../libs/DibiVariable.php'; diff --git a/dibi/drivers/mssql.php b/dibi/drivers/mssql.php index 0b32cb7b..af7cc1e3 100644 --- a/dibi/drivers/mssql.php +++ b/dibi/drivers/mssql.php @@ -265,6 +265,7 @@ class DibiMsSqlDriver extends NObject implements DibiDriverInterface public function free() { mssql_free_result($this->resultset); + $this->resultset = NULL; } diff --git a/dibi/drivers/mysql.php b/dibi/drivers/mysql.php index 1be9137a..47231226 100644 --- a/dibi/drivers/mysql.php +++ b/dibi/drivers/mysql.php @@ -310,6 +310,7 @@ class DibiMySqlDriver extends NObject implements DibiDriverInterface public function free() { mysql_free_result($this->resultset); + $this->resultset = NULL; } diff --git a/dibi/drivers/mysqli.php b/dibi/drivers/mysqli.php index 783bf6aa..c2d98bb5 100644 --- a/dibi/drivers/mysqli.php +++ b/dibi/drivers/mysqli.php @@ -297,6 +297,7 @@ class DibiMySqliDriver extends NObject implements DibiDriverInterface public function free() { mysqli_free_result($this->resultset); + $this->resultset = NULL; } diff --git a/dibi/drivers/odbc.php b/dibi/drivers/odbc.php index 5aaab5d3..d4ee8e47 100644 --- a/dibi/drivers/odbc.php +++ b/dibi/drivers/odbc.php @@ -279,6 +279,7 @@ class DibiOdbcDriver extends NObject implements DibiDriverInterface public function free() { odbc_free_result($this->resultset); + $this->resultset = NULL; } diff --git a/dibi/drivers/oracle.php b/dibi/drivers/oracle.php index 9b24c1a2..357bd08d 100644 --- a/dibi/drivers/oracle.php +++ b/dibi/drivers/oracle.php @@ -272,6 +272,7 @@ class DibiOracleDriver extends NObject implements DibiDriverInterface public function free() { oci_free_statement($this->resultset); + $this->resultset = NULL; } diff --git a/dibi/drivers/postgre.php b/dibi/drivers/postgre.php index ef4dfa92..82a06739 100644 --- a/dibi/drivers/postgre.php +++ b/dibi/drivers/postgre.php @@ -140,14 +140,14 @@ class DibiPostgreDriver extends NObject implements DibiDriverInterface { if ($sequence === NULL) { // PostgreSQL 8.1 is needed - $res = $this->query("SELECT LASTVAL() AS seq"); + $has = $this->query("SELECT LASTVAL() AS seq"); } else { - $res = $this->query("SELECT CURRVAL('$sequence') AS seq"); + $has = $this->query("SELECT CURRVAL('$sequence') AS seq"); } - if (is_resource($res)) { - $row = pg_fetch_assoc($res); - pg_free_result($res); + if ($has) { + $row = $this->fetch(); + $this->free(); return $row['seq']; } @@ -277,6 +277,7 @@ class DibiPostgreDriver extends NObject implements DibiDriverInterface public function free() { pg_free_result($this->resultset); + $this->resultset = NULL; } diff --git a/dibi/libs/DibiDriverInterface.php b/dibi/libs/DibiDriverInterface.php index 0c0e284f..2ef33559 100644 --- a/dibi/libs/DibiDriverInterface.php +++ b/dibi/libs/DibiDriverInterface.php @@ -191,23 +191,3 @@ interface DibiDriverInterface function getDibiReflection(); } - - - - - -/** - * Interface for user variable, used for generating SQL - * @package dibi - */ -interface DibiVariableInterface -{ - /** - * Format for SQL - * - * @param object destination DibiDriverInterface - * @param string optional modifier - * @return string SQL code - */ - public function toSql(DibiDriverInterface $driver, $modifier); -} diff --git a/dibi/libs/DibiVariable.php b/dibi/libs/DibiVariable.php new file mode 100644 index 00000000..4f02f7bb --- /dev/null +++ b/dibi/libs/DibiVariable.php @@ -0,0 +1,63 @@ +value = $value; + $this->type = $type; + } + + + public function toSql(DibiDriverInterface $driver, $modifier) + { + return $driver->format($this->value, $this->type); + } + +} \ No newline at end of file