]> granicus.if.org Git - php/commitdiff
Added test for KEY_PAIR code and fixed KEY_PAIR detection code
authorIlia Alshanetsky <iliaa@php.net>
Sun, 22 Jul 2007 15:50:17 +0000 (15:50 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sun, 22 Jul 2007 15:50:17 +0000 (15:50 +0000)
ext/pdo/pdo_stmt.c
ext/pdo/tests/pdo_034.phpt

index e02a1c62b5ee80e7bc9ce34a209d045cbbdcc394..bb0ed50b0e0ad23ec3571a354402c42d4b2a5550 100755 (executable)
@@ -1521,7 +1521,7 @@ static PHP_METHOD(PDOStatement, fetchAll)
        if (!error)     {
                PDO_STMT_CLEAR_ERR();
                MAKE_STD_ZVAL(data);
-               if (how & (PDO_FETCH_GROUP|PDO_FETCH_KEY_PAIR)) {
+               if ((how & PDO_FETCH_GROUP) || how == PDO_FETCH_KEY_PAIR) {
                        array_init(return_value);
                        return_all = return_value;
                } else {
@@ -1533,11 +1533,11 @@ static PHP_METHOD(PDOStatement, fetchAll)
                }
        }
        if (!error) {
-               if (how & PDO_FETCH_GROUP) {
+               if ((how & PDO_FETCH_GROUP)) {
                        do {
                                MAKE_STD_ZVAL(data);
                        } while (do_fetch(stmt, TRUE, data, how, PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC));
-               } else if (how & PDO_FETCH_KEY_PAIR) {
+               } else if (how == PDO_FETCH_KEY_PAIR) {
                        while (do_fetch(stmt, TRUE, data, how, PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC));
                } else {
                        array_init(return_value);
index 0f012c616ace3988b4664e90999cfa92464e3c86..f3014578fdfe44c6fbdd15003c1d564a107506c6 100644 (file)
@@ -23,6 +23,7 @@ for ($i = 0; $i < 5; $i++) {
 var_dump($db->query("SELECT a,b FROM test")->fetch(PDO::FETCH_KEY_PAIR));
 var_dump($db->query("SELECT a,b FROM test")->fetchAll(PDO::FETCH_KEY_PAIR));
 var_dump($db->query("SELECT * FROM test")->fetch(PDO::FETCH_KEY_PAIR));
+var_dump($db->query("SELECT a,a FROM test")->fetchAll(PDO::FETCH_KEY_PAIR));
 
 ?>
 --EXPECTF--
@@ -31,34 +32,31 @@ array(1) {
   string(1) "0"
 }
 array(5) {
-  [0]=>
-  array(1) {
-    ["test0"]=>
-    string(1) "0"
-  }
-  [1]=>
-  array(1) {
-    ["test1"]=>
-    string(1) "1"
-  }
-  [2]=>
-  array(1) {
-    ["test2"]=>
-    string(1) "2"
-  }
-  [3]=>
-  array(1) {
-    ["test3"]=>
-    string(1) "3"
-  }
-  [4]=>
-  array(1) {
-    ["test4"]=>
-    string(1) "4"
-  }
+  ["test0"]=>
+  string(1) "0"
+  ["test1"]=>
+  string(1) "1"
+  ["test2"]=>
+  string(1) "2"
+  ["test3"]=>
+  string(1) "3"
+  ["test4"]=>
+  string(1) "4"
 }
 
-Warning: PDOStatement::fetch(): SQLSTATE[HY000]: General error: PDO::FETCH_KEY_PAIR fetch mode requires the result set to contain extactly 2 columns. in %s/tests%spdo_034.php on line %d
+Warning: PDOStatement::fetch(): SQLSTATE[HY000]: General error: PDO::FETCH_KEY_PAIR fetch mode requires the result set to contain extactly 2 columns. in %s/pdo_034.php on line %d
 
-Warning: PDOStatement::fetch(): SQLSTATE[HY000]: General error%s/tests%spdo_034.php on line %d
+Warning: PDOStatement::fetch(): SQLSTATE[HY000]: General error in %s/pdo_034.php on line %d
 bool(false)
+array(5) {
+  ["test0"]=>
+  string(5) "test0"
+  ["test1"]=>
+  string(5) "test1"
+  ["test2"]=>
+  string(5) "test2"
+  ["test3"]=>
+  string(5) "test3"
+  ["test4"]=>
+  string(5) "test4"
+}