Add getAffectedRows() and getInsertID() to DB classes

쿼리 실행 후 affected rows, last insert ID 값을 받아올 수 있도록
DB 클래스에 관련 메소드를 추가함
This commit is contained in:
Kijin Sung 2018-01-15 13:59:14 +09:00
parent 8ef0d05ecb
commit fa2b2914f2
5 changed files with 106 additions and 9 deletions

View file

@ -1213,6 +1213,23 @@ class DB
return $dbParser; return $dbParser;
} }
/**
* Get the number of rows affected by the last query
* @return int
*/
public function getAffectedRows()
{
return -1;
}
/**
* Get the ID generated in the last query
* @return int
*/
public function getInsertID()
{
return 0;
}
} }
/* End of file DB.class.php */ /* End of file DB.class.php */
/* Location: ./classes/db/DB.class.php */ /* Location: ./classes/db/DB.class.php */

View file

@ -1117,6 +1117,26 @@ class DBCubrid extends DB
} }
} }
/**
* Get the number of rows affected by the last query
* @return int
*/
function getAffectedRows()
{
$connection = $this->_getConnection('master');
return cubrid_affected_rows($connection);
}
/**
* Get the ID generated in the last query
* @return int
*/
function getInsertID()
{
$connection = $this->_getConnection('master');
return cubrid_insert_id($connection);
}
/** /**
* If have a error, return error object * If have a error, return error object
* @param BaseObject $queryObject * @param BaseObject $queryObject

View file

@ -37,6 +37,11 @@ class DBMssql extends DB
'date' => 'nvarchar(14)', 'date' => 'nvarchar(14)',
'float' => 'float', 'float' => 'float',
); );
/**
* Last statement executed
*/
var $last_stmt;
/** /**
* Constructor * Constructor
@ -242,6 +247,7 @@ class DBMssql extends DB
$this->setError(print_r(sqlsrv_errors(), true)); $this->setError(print_r(sqlsrv_errors(), true));
} }
$this->last_stmt = $stmt;
$this->param = array(); $this->param = array();
return $stmt; return $stmt;
@ -988,6 +994,27 @@ class DBMssql extends DB
} }
} }
/**
* Get the number of rows affected by the last query
* @return int
*/
function getAffectedRows()
{
$stmt = $this->last_stmt;
return $stmt ? sqlsrv_rows_affected($stmt) : -1;
}
/**
* Get the ID generated in the last query
* @return int
*/
function getInsertID()
{
$result = $this->_query('SELECT @@IDENTITY as id');
$output = $this->_fetch($result);
return $output->id ?: 0;
}
/** /**
* Return the DBParser * Return the DBParser
* @param boolean $force * @param boolean $force

View file

@ -39,6 +39,11 @@ class DBMysql extends DB
'float' => 'float', 'float' => 'float',
); );
/**
* Last statement executed
*/
var $last_stmt;
/** /**
* Constructor * Constructor
* @return void * @return void
@ -177,6 +182,7 @@ class DBMysql extends DB
$this->setError(mysql_errno($connection), mysql_error($connection)); $this->setError(mysql_errno($connection), mysql_error($connection));
} }
// Return result // Return result
$this->last_stmt = $result;
return $result; return $result;
} }
@ -228,7 +234,7 @@ class DBMysql extends DB
{ {
$query = sprintf("insert into `%ssequence` (seq) values ('0')", $this->prefix); $query = sprintf("insert into `%ssequence` (seq) values ('0')", $this->prefix);
$this->_query($query); $this->_query($query);
$sequence = $this->db_insert_id(); $sequence = $this->getInsertID();
if($sequence % 10000 == 0) if($sequence % 10000 == 0)
{ {
$query = sprintf("delete from `%ssequence` where seq < %d", $this->prefix, $sequence); $query = sprintf("delete from `%ssequence` where seq < %d", $this->prefix, $sequence);
@ -800,16 +806,33 @@ class DBMysql extends DB
} }
} }
/**
* Get the number of rows affected by the last query
* @return int
*/
function getAffectedRows()
{
$connection = $this->_getConnection('master');
return mysql_affected_rows($connection);
}
/** /**
* Get the ID generated in the last query * Get the ID generated in the last query
* Return next sequence from sequence table * @return int
* This method use only mysql */
function getInsertID()
{
$connection = $this->_getConnection('master');
return mysql_insert_id($connection);
}
/**
* @deprecated
* @return int * @return int
*/ */
function db_insert_id() function db_insert_id()
{ {
$connection = $this->_getConnection('master'); return $this->getInsertID();
return mysql_insert_id($connection);
} }
/** /**

View file

@ -123,6 +123,7 @@ class DBMysqli extends DBMysql
} }
// Return stmt for other processing - like retrieving resultset (_fetch) // Return stmt for other processing - like retrieving resultset (_fetch)
$this->last_stmt = $stmt;
return $stmt; return $stmt;
} }
} }
@ -135,6 +136,7 @@ class DBMysqli extends DBMysql
$this->setError(mysqli_errno($connection), $error); $this->setError(mysqli_errno($connection), $error);
} }
// Return result // Return result
$this->last_stmt = $result;
return $result; return $result;
} }
@ -373,12 +375,20 @@ class DBMysqli extends DBMysql
} }
/** /**
* Get the ID generated in the last query * Get the number of rows affected by the last query
* Return next sequence from sequence table
* This method use only mysql
* @return int * @return int
*/ */
function db_insert_id() function getAffectedRows()
{
$stmt = $this->last_stmt;
return $stmt ? $stmt->affected_rows : -1;
}
/**
* Get the ID generated in the last query
* @return int
*/
function getInsertID()
{ {
$connection = $this->_getConnection('master'); $connection = $this->_getConnection('master');
return mysqli_insert_id($connection); return mysqli_insert_id($connection);