summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRogerio Prado de Jesus <rogeriopradoj@gmail.com>2012-05-19 18:45:44 +0200
committerRogerio Prado de Jesus <rogeriopradoj@gmail.com>2012-05-19 18:45:44 +0200
commit27738491fc11d0b9ce5670b2f6a7957fc421ee4b (patch)
tree9fa2ee9417387f5cf4bf0f108dcce25f69f0f8c2
parent9fa8d404790833a098a8bbd855f1452897d6ff88 (diff)
Fix a issue with CI_DB_pdo_result::num_rows()
In case of SELECT queries PDOStatement::rowCount doesn't work as expected. This commit makes it returns the expected value.
-rw-r--r--system/database/drivers/pdo/pdo_result.php13
-rw-r--r--user_guide/changelog.html1
2 files changed, 13 insertions, 1 deletions
diff --git a/system/database/drivers/pdo/pdo_result.php b/system/database/drivers/pdo/pdo_result.php
index 7f3058ff0..c05fbc908 100644
--- a/system/database/drivers/pdo/pdo_result.php
+++ b/system/database/drivers/pdo/pdo_result.php
@@ -34,7 +34,18 @@ class CI_DB_pdo_result extends CI_DB_result {
*/
function num_rows()
{
- return $this->result_id->rowCount();
+ if (is_numeric(stripos($this->result_id->queryString, 'SELECT')))
+ {
+ $dbh = $this->conn_id;
+ $query = $dbh->query($this->result_id->queryString);
+ $result = $query->fetchAll();
+ unset($dbh, $query);
+ return count($result);
+ }
+ else
+ {
+ return $this->result_id->rowCount();
+ }
}
// --------------------------------------------------------------------
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index e1a87d963..ca1a55bac 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -88,6 +88,7 @@ Change Log
<li>Fixed a bug - CSRF cookie value was allowed to be any (non-empty) string before being written to the output, making code injection a risk.</li>
<li>Fixed a bug (#726) - PDO put a 'dbname' argument in it's connection string regardless of the database platform in use, which made it impossible to use SQLite.</li>
<li>Fixed a bug - CI_DB_pdo_driver::affect_row was not being initialized properly with SELECT queries, cause it was relying on PDOStatement::rowCount().</li>
+ <li>Fixed a bug - CI_DB_pdo_result::num_rows() was not returning properly value with SELECT queries, cause it was relying on PDOStatement::rowCount().</li>
</ul>