List:Commits« Previous MessageNext Message »
From:uwendel Date:March 11 2008 1:44pm
Subject:PHP mysqlnd svn commit: r1345 - trunk/tests/ext/pdo
View as plain text  
Author: uwendel
Date: 2008-03-11 13:44:06 +0100 (Tue, 11 Mar 2008)
New Revision: 1345

Added:
   trunk/tests/ext/pdo/pdo_stmt_fetch_key_pair.phpt
Log:
PDO::FETCH_KEY_PAIR


Added: trunk/tests/ext/pdo/pdo_stmt_fetch_key_pair.phpt
===================================================================
--- trunk/tests/ext/pdo/pdo_stmt_fetch_key_pair.phpt	                        (rev 0)
+++ trunk/tests/ext/pdo/pdo_stmt_fetch_key_pair.phpt	2008-03-11 12:44:06 UTC (rev 1345)
@@ -0,0 +1,103 @@
+--TEST--
+PDO Common: PDOStatement->fetch() / PDO::FETCH_KEY_PAIR
+--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->exec("CREATE TABLE test(id INT, val VARCHAR(10), grp VARCHAR(10))");
+$db->exec("INSERT INTO test(id, val, grp) VALUES(1, 'A', 'Group1')");
+$db->exec("INSERT INTO test(id, val, grp) VALUES(2, 'B', 'Group2')");
+$db->exec("INSERT INTO test(id, grp) VALUES(3, 'Group3')");
+$db->exec("INSERT INTO test(val, grp) VALUES('D', 'Group4')");
+$db->exec("INSERT INTO test(id, val, grp) VALUES(5, '', 'Group5')");
+
+try {
+
+	// default settings
+	$query = 'SELECT id, val FROM test ORDER BY id ASC';
+	$stmt = $db->prepare($query);
+	$expected = array();
+	$stmt->execute();
+	while (is_array($row = $stmt->fetch(PDO::FETCH_ASSOC)))
+		$expected[$row['id']] = $row['val'];
+	ksort($expected);
+
+
+	$stmt->execute();
+	$res = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
+	ksort($res);
+	if ($res !== $expected) {
+		printf("[002] Expecting %s got %s\n",
+			var_export($expected, true), var_export($res, true));
+	}
+
+	$stmt = $db->prepare($query);
+	$stmt->setFetchMode(PDO::FETCH_KEY_PAIR);
+	$stmt->execute();
+	$res = array();
+	while ($row = $stmt->fetch()) {
+		reset($row);
+		list($k, $v) = each($row);
+		$res[$k] = $v;
+	}
+	ksort($res);
+	if ($res !== $expected) {
+		printf("[003] Expecting %s got %s\n",
+			var_export($expected, true), var_export($res, true));
+	}
+
+	$stmt = $db->prepare($query);
+	$stmt->execute();
+	$res = array();
+	while ($row = $stmt->fetch(PDO::FETCH_KEY_PAIR)) {
+		reset($row);
+		list($k, $v) = each($row);
+		$res[$k] = $v;
+	}
+	ksort($res);
+	if ($res !== $expected) {
+		printf("[004] Expecting %s got %s\n",
+			var_export($expected, true), var_export($res, true));
+	}
+
+	// When will PDO bail if the result set has only one column?
+	// Will it bail at fetch[All]() or earlier when calling setFetchMode()
+	$query = 'SELECT id FROM test ORDER BY id';
+	$stmt = $db->prepare($query);
+	$stmt->execute();
+	if (false !== ($tmp = $stmt->fetch(PDO::FETCH_KEY_PAIR)))
+		printf("[005] Expecting false got %s\n", var_export($tmp, true));
+
+	$stmt = $db->prepare($query);
+	$stmt->setFetchMode(PDO::FETCH_KEY_PAIR);
+	$stmt->execute();
+	if (false !== ($tmp = $stmt->fetch()))
+		printf("[006] Expecting false got %s\n", var_export($tmp, true));
+
+
+} catch (PDOException $e) {
+	// we should never get here, we use warnings, but never trust a system...
+	printf("[001] %s, [%s} %s\n",
+		$e->getMessage(), $db->errorInfo(), implode(' ', $db->errorInfo()));
+}
+print "done!";
+?>
+--EXPECTF--
+Warning: PDOStatement::fetch(): SQLSTATE[HY000]: General error: PDO::FETCH_KEY_PAIR fetch
mode requires the result set to contain extactly 2 columns. in %s on line %d
+
+Warning: PDOStatement::fetch(): SQLSTATE[HY000]: %s in %s 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 on line %d
+
+Warning: PDOStatement::fetch(): SQLSTATE[HY000]: %s in %s on line %d
+done!
\ No newline at end of file

Thread
PHP mysqlnd svn commit: r1345 - trunk/tests/ext/pdouwendel11 Mar