Annotation of embedaddon/php/ext/pdo_mysql/tests/pdo_mysql_stmt_blobs.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: MySQL Prepared Statements and BLOBs
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: ?>
9: --FILE--
10: <?php
11: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
12: $db = MySQLPDOTest::factory();
13:
14: $blobs = array(
15: 'TINYBLOB' => 255,
16: 'TINYTEXT' => 255,
17: 'BLOB' => 32767,
18: 'TEXT' => 32767,
19: 'MEDIUMBLOB' => 100000,
20: 'MEDIUMTEXT' => 100000,
21: 'LONGBLOB' => 100000,
22: 'LONGTEXT' => 100000,
23: );
24:
25: function test_blob($db, $offset, $sql_type, $test_len) {
26:
27: $db->exec('DROP TABLE IF EXISTS test');
28: $db->exec(sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, PDO_MYSQL_TEST_ENGINE));
29:
30: $value = str_repeat('a', $test_len);
31: $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
32: $stmt->bindValue(1, 1);
33: $stmt->bindValue(2, $value);
34: if (!$stmt->execute()) {
35: printf("[%03d + 1] %d %s\n",
36: $offset, $stmt->errorCode(), var_export($stmt->errorInfo(), true));
37: return false;
38: }
39:
40: $stmt = $db->query('SELECT id, label FROM test');
41: $id = $label = NULL;
42: $stmt->bindColumn(1, $id, PDO::PARAM_INT);
43: $stmt->bindColumn(2, $label, PDO::PARAM_LOB);
44:
45: if (!$stmt->fetch(PDO::FETCH_BOUND)) {
46: printf("[%03d + 2] %d %s\n",
47: $offset, $stmt->errorCode(), var_export($stmt->errorInfo(), true));
48: return false;
49: }
50:
51: if ($label !== $value) {
52: printf("[%03d + 3] Returned value seems to be wrong (%d vs. %d charachters). Check manually\n",
53: $offset, strlen($label), strlen($value));
54: return false;
55: }
56:
57: if (1 != $id) {
58: printf("[%03d + 3] Returned id column value seems wrong, expecting 1 got %s.\n",
59: $offset, var_export($id, true));
60: return false;
61: }
62:
63: $stmt = $db->query('SELECT id, label FROM test');
64: $ret = $stmt->fetch(PDO::FETCH_ASSOC);
65:
66: if ($ret['label'] !== $value) {
67: printf("[%03d + 3] Returned value seems to be wrong (%d vs. %d charachters). Check manually\n",
68: $offset, strlen($ret['label']), strlen($value));
69: return false;
70: }
71:
72: if (1 != $ret['id']) {
73: printf("[%03d + 3] Returned id column value seems wrong, expecting 1 got %s.\n",
74: $offset, var_export($ret['id'], true));
75: return false;
76: }
77:
78: return true;
79: }
80:
81: $offset = 0;
82: foreach ($blobs as $sql_type => $test_len) {
83: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
84: test_blob($db, ++$offset, $sql_type, $test_len);
85: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
86: test_blob($db, ++$offset, $sql_type, $test_len);
87: }
88:
89: print "done!";
90: ?>
91: --CLEAN--
92: <?php
93: require dirname(__FILE__) . '/mysql_pdo_test.inc';
94: $db = MySQLPDOTest::factory();
95: $db->exec('DROP TABLE IF EXISTS test');
96: ?>
97: --EXPECTF--
98: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>