Annotation of embedaddon/php/ext/pdo_mysql/tests/pdo_mysql_prepare_native_placeholder_everywhere.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: MySQL PDO->prepare(),native PS, anonymous placeholder
3: --SKIPIF--
4: <?php
5: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
6: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
7: MySQLPDOTest::skip();
8: $db = MySQLPDOTest::factory();
9: ?>
10: --FILE--
11: <?php
12: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
13: $db = MySQLPDOTest::factory();
14: try {
15: $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
16: if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
17: printf("[002] Unable to switch on emulated prepared statements, test will fail\n");
18:
19: $db->exec('DROP TABLE IF EXISTS test');
20: $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
21: $db->exec("INSERT INTO test(id, label) VALUES (1, 'row1')");
22:
23: $stmt = $db->prepare('SELECT ?, id, label FROM test WHERE ? = ? ORDER BY id ASC');
24: $stmt->execute(array('id', 'label', 'label'));
25: if ('00000' !== $stmt->errorCode())
26: printf("[003] Execute has failed, %s %s\n",
27: var_export($stmt->errorCode(), true),
28: var_export($stmt->errorInfo(), true));
29: var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
30:
31: // now the same with native PS
32: printf("now the same with native PS\n");
33: $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
34: if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
35: printf("[004] Unable to switch off emulated prepared statements, test will fail\n");
36:
37: $stmt = $db->prepare('SELECT ?, id, label FROM test WHERE ? = ? ORDER BY id ASC');
38: $stmt->execute(array('id', 'label', 'label'));
39: if ('00000' !== $stmt->errorCode())
40: printf("[005] Execute has failed, %s %s\n",
41: var_export($stmt->errorCode(), true),
42: var_export($stmt->errorInfo(), true));
43:
44: $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
45: if (!MySQLPDOTest::isPDOMySQLnd()) {
46: if (isset($tmp[0]['id'])) {
47: // libmysql should return a string here whereas mysqlnd returns a native int
48: if (gettype($tmp[0]['id']) == 'string')
49: // convert to int for the test output...
50: settype($tmp[0]['id'], 'integer');
51: }
52: }
53: var_dump($tmp);
54:
55: } catch (PDOException $e) {
56: printf("[001] %s [%s] %s\n",
57: $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
58: }
59:
60: print "done!";
61: ?>
62: --CLEAN--
63: <?php
64: require dirname(__FILE__) . '/mysql_pdo_test.inc';
65: $db = MySQLPDOTest::factory();
66: $db->exec('DROP TABLE IF EXISTS test');
67: ?>
68: --EXPECTF--
69: array(1) {
70: [0]=>
71: array(2) {
72: ["id"]=>
73: string(1) "1"
74: ["label"]=>
75: string(4) "row1"
76: }
77: }
78: now the same with native PS
79: array(1) {
80: [0]=>
81: array(3) {
82: ["?"]=>
83: string(2) "id"
84: ["id"]=>
85: int(1)
86: ["label"]=>
87: string(4) "row1"
88: }
89: }
90: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>