Annotation of embedaddon/php/ext/pgsql/tests/08escape.phpt, revision 1.1.1.2
1.1 misho 1: --TEST--
2: PostgreSQL escape functions
3: --SKIPIF--
4: <?php include("skipif.inc"); ?>
5: --FILE--
6: <?php
7:
8: include 'config.inc';
9: define('FILE_NAME', dirname(__FILE__) . '/php.gif');
10:
11: // pg_escape_string() test
12: $before = "ABC\\ABC\'";
13: $expect = "ABC\\\\ABC\\'";
1.1.1.2 ! misho 14: $expect2 = "ABC\\\\ABC\\\\''"; //the way escape string differs from PostgreSQL 9.0
1.1 misho 15: $after = pg_escape_string($before);
1.1.1.2 ! misho 16: if ($expect === $after || $expect2 === $after) {
1.1 misho 17: echo "pg_escape_string() is Ok\n";
18: }
19: else {
20: echo "pg_escape_string() is NOT Ok\n";
21: var_dump($before);
22: var_dump($after);
23: var_dump($expect);
24: }
25:
26: // pg_escape_bytea() test
27: $before = "ABC\\ABC";
28: $expect = "ABC\\\\\\\\ABC";
29: $after = pg_escape_bytea($before);
30: if ($expect === $after) {
31: echo "pg_escape_bytea() is Ok\n";
32: }
33: else {
34: echo "pg_escape_byte() is NOT Ok\n";
35: var_dump($before);
36: var_dump($after);
37: var_dump($expect);
38: }
39:
40: // Test using database
41: $data = file_get_contents(FILE_NAME);
42: $db = pg_connect($conn_str);
43:
44: // Insert binary to DB
45: $escaped_data = pg_escape_bytea($data);
46: pg_query("DELETE FROM ".$table_name." WHERE num = -9999;");
47: $sql = "INSERT INTO ".$table_name." (num, bin) VALUES (-9999, CAST ('".$escaped_data."' AS BYTEA));";
48: pg_query($db, $sql);
49:
50: // Retrieve binary from DB
51: $sql = "SELECT bin::bytea FROM ".$table_name." WHERE num = -9999";
52: $result = pg_query($db, $sql);
53: $row = pg_fetch_array($result, 0, PGSQL_ASSOC);
54:
55: if ($data === pg_unescape_bytea($row['bin'])) {
56: echo "pg_escape_bytea() actually works with database\n";
57: }
58: else {
59: echo "pg_escape_bytea() is broken\n";
60: }
61:
1.1.1.2 ! misho 62: // pg_escape_literal/pg_escape_identifier
! 63: $before = "ABC\\ABC\'";
! 64: $expect = " E'ABC\\\\ABC\\\\'''";
! 65: $after = pg_escape_literal($before);
! 66: if ($expect === $after) {
! 67: echo "pg_escape_literal() is Ok\n";
! 68: }
! 69: else {
! 70: echo "pg_escape_literal() is NOT Ok\n";
! 71: var_dump($before);
! 72: var_dump($after);
! 73: var_dump($expect);
! 74: }
! 75:
! 76: $before = "ABC\\ABC\'";
! 77: $expect = "\"ABC\ABC\'\"";
! 78: $after = pg_escape_identifier($before);
! 79: if ($expect === $after) {
! 80: echo "pg_escape_identifier() is Ok\n";
! 81: }
! 82: else {
! 83: echo "pg_escape_identifier() is NOT Ok\n";
! 84: var_dump($before);
! 85: var_dump($after);
! 86: var_dump($expect);
! 87: }
! 88:
1.1 misho 89: ?>
90: --EXPECT--
1.1.1.2 ! misho 91: pg_escape_string() is Ok
1.1 misho 92: pg_escape_bytea() is Ok
93: pg_escape_bytea() actually works with database
1.1.1.2 ! misho 94: pg_escape_literal() is Ok
! 95: pg_escape_identifier() is Ok
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>