Annotation of embedaddon/php/ext/pdo_mysql/tests/bug_50323.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Bug #50323 (No ability to connect to database named 't;', no chance to escape semicolon)
3: --SKIPIF--
4: <?php
5: if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded');
6: require dirname(__FILE__) . '/config.inc';
7: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
8: PDOTest::skip();
9: ?>
10: --FILE--
11: <?php
12: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
13: $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
14:
15: function changeDSN($original, $new_options) {
16: $old_options = array();
17: $dsn = substr($original,
18: strpos($original, ':') + 1,
19: strlen($original));
20:
21: // no real parser - any excotic setting can fool us
22: $parts = explode(';', $dsn);
23: foreach ($parts as $k => $v) {
24: $tmp = explode('=', $v);
25: if (count($tmp) == 2)
26: $old_options[$tmp[0]] = $tmp[1];
27: }
28:
29: $options = $old_options;
30: foreach ($new_options as $k => $v)
31: $options[$k] = $v;
32:
33: $dsn = 'mysql:';
34: foreach ($options as $k => $v)
35: $dsn .= sprintf('%s=%s;', $k, $v);
36:
37: $dsn = substr($dsn, 0, strlen($dsn) -1);
38:
39: return $dsn;
40: }
41:
42:
43: if (1 === @$db->exec('CREATE DATABASE `crazy;dbname`')) {
44: $dsn = changeDSN(getenv('PDOTEST_DSN'), array('dbname' => 'crazy;;dbname'));
45: $user = getenv('PDOTEST_USER');
46: $pass = getenv('PDOTEST_PASS');
47:
48: new PDO($dsn, $user, $pass);
49: }
50: echo 'done!';
51: ?>
52: --CLEAN--
53: <?php
54: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
55: $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
56:
57: @$db->exec('DROP DATABASE IF EXISTS `crazy;dbname`');
58: ?>
59: --EXPECTF--
60: done!
61:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>