summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2007-10-31 12:57:51 +0000
committerIlia Alshanetsky <iliaa@php.net>2007-10-31 12:57:51 +0000
commit548c25ef1c4befddb59382a118c12a84aa8faabe (patch)
treedc073f3e5d6e620e4d57bb3e243496ef8585c3a1
parent84f0fba1a5e4ed62bb82d6c08b3238c0f0d9332e (diff)
downloadphp-git-548c25ef1c4befddb59382a118c12a84aa8faabe.tar.gz
Fixed bug #43139 PDO ignores ATTR_DEFAULT_FETCH_MODE in some cases with fetchAll()
-rwxr-xr-xext/pdo/pdo_stmt.c4
-rw-r--r--ext/pdo/tests/bug_43139.phpt34
2 files changed, 38 insertions, 0 deletions
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index 470c6e7ef7..35f3232c20 100755
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -1546,6 +1546,10 @@ static PHP_METHOD(PDOStatement, fetchAll)
}
}
+ if ((how & ~PDO_FETCH_FLAGS) == PDO_FETCH_USE_DEFAULT) {
+ how |= stmt->default_fetch_type & ~PDO_FETCH_FLAGS;
+ }
+
if (!error) {
PDO_STMT_CLEAR_ERR();
MAKE_STD_ZVAL(data);
diff --git a/ext/pdo/tests/bug_43139.phpt b/ext/pdo/tests/bug_43139.phpt
new file mode 100644
index 0000000000..04b9bf311e
--- /dev/null
+++ b/ext/pdo/tests/bug_43139.phpt
@@ -0,0 +1,34 @@
+--TEST--
+PDO Common: Bug #43139 (PDO ignore ATTR_DEFAULT_FETCH_MODE in some cases with fetchAll())
+--SKIPIF--
+<?php # vim:ft=php
+if (!extension_loaded('pdo')) die('skip');
+$dir = getenv('REDIR_TEST_DIR');
+if (false == $dir) die('skip no driver');
+require_once $dir . 'pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/');
+require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
+$db = PDOTest::factory();
+
+$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
+$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+
+var_dump($db->query('select 0 as abc, 1 as xyz, 2 as def')->fetchAll(PDO::FETCH_GROUP));
+?>
+--EXPECT--
+array(1) {
+ [0]=>
+ array(1) {
+ [0]=>
+ array(2) {
+ ["xyz"]=>
+ string(1) "1"
+ ["def"]=>
+ string(1) "2"
+ }
+ }
+}