uw Wed Oct 10 10:17:38 2007 UTC
Added files: (Branch: PHP_5_3)
/php-src/ext/mysqli/tests mysqli_master_query.phpt
mysqli_max_links.phpt
mysqli_more_results.phpt
mysqli_multi_query.phpt
mysqli_mysqli_result_invalid_mode.phpt
mysqli_next_result.phpt
mysqli_no_reconnect.phpt
mysqli_num_fields.phpt
mysqli_num_rows.phpt
mysqli_options_init_command.phpt
mysqli_options_openbasedir.phpt
mysqli_options.phpt
mysqli_pconn_disabled.phpt
mysqli_pconnect.phpt
mysqli_pconn_kill.phpt
mysqli_pconn_limits.phpt
mysqli_pconn_max_links.phpt
mysqli_pconn_reuse.phpt
mysqli_phpinfo.phpt mysqli_ping.phpt
mysqli_prepare_no_object.phpt
mysqli_prepare.phpt
Log:
Adding new tests: mysqli_m*.phpt mysqli_n*.phpt mysqli_o*.phpt mysqli_p*.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_master_query.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_master_query.phpt
+++ php-src/ext/mysqli/tests/mysqli_master_query.phpt
--TEST--
mysqli_master_query()
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
if (!function_exists('mysqli_master_query')) {
die("skip mysqli_master_query() not available");
}
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
/* NOTE: tests is a stub, but function is deprecated, as long as it
does not crash when invoking it... */
include "connect.inc";
$tmp = NULL;
$link = NULL;
if (NULL !== ($tmp = @mysqli_master_query()))
printf("[001] Expecting NULL/NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (NULL !== ($tmp = @mysqli_master_query($link)))
printf("[002] Expecting NULL/NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port,
$socket)) {
printf("[003] Cannot connect to the server using host=%s,
user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
$host, $user, $db, $port, $socket);
}
if (!is_bool($tmp = mysqli_master_query($link, 'SELECT 1')))
printf("[004] Expecting boolean/[true|false] value, got
%s/%s\n", gettype($tmp), $tmp);
mysqli_close($link);
if (NULL !== ($tmp = mysqli_master_query($link)))
printf("[005] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
print "done!";
?>
--EXPECTF--
Warning: mysqli_master_query(): Couldn't fetch mysqli in %s on line %d
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_max_links.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_max_links.phpt
+++ php-src/ext/mysqli/tests/mysqli_max_links.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_more_results.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_more_results.phpt
+++ php-src/ext/mysqli/tests/mysqli_more_results.phpt
--TEST--
mysqli_more_results()
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
?>
--FILE--
<?php
include "connect.inc";
$strict_on = false;
if (defined('E_STRICT')) {
error_reporting(((int)ini_get('error_reporting')) | E_STRICT );
$strict_on = true;
}
$tmp = NULL;
$link = NULL;
if (!is_null($tmp = @mysqli_more_results()))
printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!is_null($tmp = @mysqli_more_results($link)))
printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
require('table.inc');
print "[004]\n";
var_dump(mysqli_more_results($link));
if (!mysqli_multi_query($link, "SELECT 1 AS a; SELECT 1 AS a, 2 AS b;
SELECT id FROM test ORDER BY id LIMIT 3"))
printf("[005] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
print "[006]\n";
$i = 1;
if ($strict_on)
ob_start();
if (mysqli_get_server_version($link) > 41000 && !($ret =
mysqli_more_results($link)))
printf("[007] Expecting boolean/true, got %s/%s\n",
gettype($ret), $ret);
do {
$res = mysqli_store_result($link);
mysqli_free_result($res);
if (mysqli_more_results($link))
printf("%d\n", $i++);
} while (mysqli_next_result($link));
if ($strict_on) {
$tmp = ob_get_contents();
ob_end_clean();
if (!preg_match('@Strict Standards: mysqli_next_result\(\):
There is no next result [EMAIL PROTECTED]', $tmp)) {
printf("[008] Strict Standards warning missing\n");
} else {
$tmp = trim(preg_replace('@Strict Standards:
mysqli_next_result\(\).*on line [EMAIL PROTECTED]', '', $tmp));
}
print trim($tmp) . "\n";
}
if (!mysqli_multi_query($link, "SELECT 1 AS a; SELECT 1 AS a, 2 AS b;
SELECT id FROM test ORDER BY id LIMIT 3"))
printf("[009] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
print "[010]\n";
$i = 1;
if (mysqli_get_server_version($link) > 41000 && !($ret =
mysqli_more_results($link)))
printf("[011] Expecting boolean/true, got %s/%s\n",
gettype($ret), $ret);
if ($strict_on)
ob_start();
do {
$res = mysqli_use_result($link);
// NOTE: if you use mysqli_use_result() with
mysqli_more_results() or any other info function,
// you must fetch all rows before you can loop to the next
result set!
// See also the MySQL Reference Manual: mysql_use_result()
while ($row = mysqli_fetch_array($res))
;
mysqli_free_result($res);
if (mysqli_more_results($link))
printf("%d\n", $i++);
} while (mysqli_next_result($link));
if ($strict_on) {
$tmp = ob_get_contents();
ob_end_clean();
if (!preg_match('@Strict Standards: mysqli_next_result\(\):
There is no next result [EMAIL PROTECTED]', $tmp)) {
printf("[008] Strict Standards warning missing\n");
} else {
$tmp = trim(preg_replace('@Strict Standards:
mysqli_next_result\(\).*on line [EMAIL PROTECTED]', '', $tmp));
}
print trim($tmp) . "\n";
}
mysqli_close($link);
var_dump(mysqli_more_results($link));
print "done!";
?>
--EXPECTF--
[004]
bool(false)
[006]
1
2
[010]
1
2
Warning: mysqli_more_results(): Couldn't fetch mysqli in %s on line %d
NULL
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_multi_query.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_multi_query.phpt
+++ php-src/ext/mysqli/tests/mysqli_multi_query.phpt
--TEST--
mysqli_multi_query()
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include "connect.inc";
$strict_on = false;
if (defined('E_STRICT')) {
error_reporting(((int)ini_get('error_reporting')) | E_STRICT );
$strict_on = true;
}
$tmp = NULL;
$link = NULL;
if (!is_null($tmp = @mysqli_multi_query()))
printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!is_null($tmp = @mysqli_multi_query($link)))
printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
require('table.inc');
if (false !== ($tmp = mysqli_multi_query($link, "")))
printf("[003] Expecting boolean/false, got %s/%s\n",
gettype($tmp), $tmp);
if (!mysqli_multi_query($link, "SELECT 1 AS a; SELECT 1 AS a, 2 AS b;
SELECT id FROM test ORDER BY id LIMIT 3"))
printf("[005] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if ($strict_on)
ob_start();
$i = 0;
do {
$res = mysqli_store_result($link);
while ($row = mysqli_fetch_array($res))
;
mysqli_free_result($res);
$i++;
} while (mysqli_next_result($link));
if ($strict_on) {
$tmp = ob_get_contents();
ob_end_clean();
if (!preg_match('@Strict Standards: mysqli_next_result\(\):
There is no next result [EMAIL PROTECTED]', $tmp)) {
printf("[005a] Strict Standards warning missing\n");
} else {
$tmp = trim(preg_replace('@Strict Standards:
mysqli_next_result\(\).*on line [EMAIL PROTECTED]', '', $tmp));
}
print trim($tmp) . "\n";
}
printf("[006] %d\n", $i);
if (!mysqli_multi_query($link, "ALTER TABLE test MODIFY id INT
AUTO_INCREMENT; INSERT INTO test(label) VALUES ('a'); SELECT id, label FROM
test ORDER BY id"))
printf("[007] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
$i = 0;
while (mysqli_next_result($link) && ($res =
mysqli_store_result($link))) {
while ($row = mysqli_fetch_array($res))
;
mysqli_free_result($res);
printf("%d/%d\n", $i, mysqli_insert_id($link));
$i++;
}
printf("[008] %d\n", $i);
if (!mysqli_multi_query($link, "SELECT id, label FROM test"))
printf("[009] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if ($strict_on)
ob_start();
$i = 0;
while (mysqli_next_result($link) && ($res =
mysqli_store_result($link))) {
while ($row = mysqli_fetch_array($res))
$i++;
mysqli_free_result($res);
}
if ($strict_on) {
$tmp = ob_get_contents();
ob_end_clean();
if (!preg_match('@Strict Standards: mysqli_next_result\(\):
There is no next result [EMAIL PROTECTED]', $tmp)) {
printf("[009a] Strict Standards warning missing\n");
} else {
$tmp = trim(preg_replace('@Strict Standards:
mysqli_next_result\(\).*on line [EMAIL PROTECTED]', '', $tmp));
}
print trim($tmp) . "\n";
}
printf("[010] %d\n", $i);
if (!mysqli_multi_query($link, "SELECT 1 AS num, 'a' AS somechar;
SELECT 2 AS num, 'a' AS somechar; SELECT 3 AS num, 'a' AS somechar"))
printf("[011] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
$res_num = 1;
do {
if (!$res = mysqli_store_result($link)) {
printf("[012 - %d] [%d] %s\n", $res_num,
mysqli_errno($link), mysqli_error($link));
continue;
}
$num_rows = 0;
while ($row = mysqli_fetch_array($res)) {
$num_rows++;
if ($row['num'] != $res_num)
printf("[013 - %d] Expecting %s got %s\n",
$res_num, $res_num, $row['num']);
if ($row['somechar'] != "a")
printf("[014 - %d] Expecting a got %s\n",
$res_num, $row['somechar']);
if (1 == $num_rows) {
/* simple metadata check */
if (!($lengths = mysqli_fetch_lengths($res)))
printf("[015 - %d] [%d] %s\n",
$res_num, mysqli_errno($link), mysqli_error($link));
if (count($lengths) != 2)
printf("[016 - %d] Expecting 2 column
lengths got %d [%d] %s\n", $res_num, count($lengths));
foreach ($lengths as $k => $length)
if ($length <= 0)
printf("[017 - %d] Strange
column lengths for column %d, got %d expecting any > 0\n",
$res_num, $k, $length);
}
}
if ($num_rows != 1)
printf("[018 - %d] Expecting 1 row, got %d rows\n",
$num_rows);
$res_num++;
mysqli_free_result($res);
} while (@mysqli_next_result($link));
if ($res_num != 4)
printf("[015] Expecting 3 result sets got %d result set[s]\n",
$res_num);
mysqli_close($link);
var_dump(mysqli_multi_query($link, "SELECT id, label FROM test"));
print "done!";
?>
--EXPECTF--
[006] 3
[008] 0
[009] [2014] Commands out of sync; you can't run this command now
[010] 7
Warning: mysqli_multi_query(): Couldn't fetch mysqli in %s on line %d
NULL
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_mysqli_result_invalid_mode.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_mysqli_result_invalid_mode.phpt
+++ php-src/ext/mysqli/tests/mysqli_mysqli_result_invalid_mode.phpt
--TEST--
mysqli_result(), invalid mode
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
require('connect.inc');
require('table.inc');
$valid = array(MYSQLI_STORE_RESULT, MYSQLI_USE_RESULT);
do {
$mode = mt_rand(-1000, 1000);
} while (in_array($mode, $valid));
if (!is_object($res = new mysqli_result($link, $mode)))
printf("[001] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
print "done!";
?>
--EXPECTF--
Warning: mysqli_result::mysqli_result(): Invalid value for resultmode in %s on
line %d
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_next_result.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_next_result.phpt
+++ php-src/ext/mysqli/tests/mysqli_next_result.phpt
--TEST--
mysqli_next_result()
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include "connect.inc";
$strict_on = false;
if (defined('E_STRICT')) {
error_reporting(((int)ini_get('error_reporting')) | E_STRICT );
$strict_on = true;
}
$tmp = NULL;
$link = NULL;
if (!is_null($tmp = @mysqli_next_result()))
printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!is_null($tmp = @mysqli_next_result($link)))
printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
require('table.inc');
if ($strict_on)
ob_start();
if (false !== ($tmp = mysqli_next_result($link)))
printf("[003] Expecting boolean/false, got %s/%s\n",
gettype($tmp), $tmp);
if ($strict_on) {
$tmp = ob_get_contents();
ob_end_clean();
if (!preg_match('@Strict Standards: mysqli_next_result\(\):
There is no next result [EMAIL PROTECTED]', $tmp)) {
printf("[003a] Strict Standards warning missing\n");
} else {
$tmp = trim(preg_replace('@Strict Standards:
mysqli_next_result\(\).*on line [EMAIL PROTECTED]', '', $tmp));
}
print trim($tmp) . "\n";
ob_start();
}
$res = mysqli_query($link, "SELECT 1 AS res");
if (false !== ($tmp = mysqli_next_result($link)))
printf("[004] Expecting boolean/false, got %s/%s\n",
gettype($tmp), $tmp);
if ($strict_on) {
$tmp = ob_get_contents();
ob_end_clean();
if (!preg_match('@Strict Standards: mysqli_next_result\(\):
There is no next result [EMAIL PROTECTED]', $tmp)) {
printf("[004a] Strict Standards warning missing\n");
} else {
$tmp = trim(preg_replace('@Strict Standards:
mysqli_next_result\(\).*on line [EMAIL PROTECTED]', '', $tmp));
}
print trim($tmp) . "\n";
}
mysqli_free_result($res);
function func_test_mysqli_next_result($link, $query, $offset,
$num_results, $strict_on) {
if (!mysqli_multi_query($link, $query))
printf("[%03d] [%d] %s\n", $offset,
mysqli_errno($link), mysqli_error($link));
$i = 0;
if ($strict_on)
ob_start();
do {
if ($res = mysqli_store_result($link)) {
mysqli_free_result($res);
$i++;
}
} while (true === mysqli_next_result($link));
if ($strict_on) {
$tmp = ob_get_contents();
ob_end_clean();
if (!preg_match('@Strict Standards:
mysqli_next_result\(\): There is no next result [EMAIL PROTECTED]', $tmp)) {
printf("[%03d] Strict Standards warning
missing\n", $offset + 1);
} else {
$tmp = trim(preg_replace('@Strict Standards:
mysqli_next_result\(\).*on line [EMAIL PROTECTED]', '', $tmp));
}
print trim($tmp) . "\n";
}
if ($i !== $num_results) {
printf("[%03d] Expecting %d result(s), got %d
result(s)\n", $offset + 2, $num_results, $i);
}
if (mysqli_more_results($link))
printf("[%03d] mysqli_more_results() indicates more
results than expected\n", $offset + 3);
if (!($res = mysqli_query($link, "SELECT 1 AS b"))) {
printf("[%03d] [%d] %s\n", $offset + 4,
mysqli_errno($link), mysqli_error($link));
} else {
mysqli_free_result($res);
}
}
func_test_mysqli_next_result($link, "SELECT 1 AS a; SELECT 1 AS a, 2 AS
b; SELECT id FROM test ORDER BY id LIMIT 3", 5, 3, $strict_on);
func_test_mysqli_next_result($link, "SELECT 1 AS a; INSERT INTO
test(id, label) VALUES (100, 'y'); SELECT 1 AS a, 2 AS b", 8, 2, $strict_on);
func_test_mysqli_next_result($link, "DELETE FROM test WHERE id >= 100;
SELECT 1 AS a; ", 11, 1, $strict_on);
mysqli_close($link);
var_dump(mysqli_next_result($link));
print "done!";
?>
--EXPECTF--
Warning: mysqli_next_result(): Couldn't fetch mysqli in %s on line %d
NULL
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_no_reconnect.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_no_reconnect.phpt
+++ php-src/ext/mysqli/tests/mysqli_no_reconnect.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_num_fields.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_num_fields.phpt
+++ php-src/ext/mysqli/tests/mysqli_num_fields.phpt
--TEST--
mysqli_num_fields()
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include "connect.inc";
$tmp = NULL;
$link = NULL;
if (!is_null($tmp = @mysqli_num_fields()))
printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!is_null($tmp = @mysqli_num_fields($link)))
printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
require('table.inc');
function func_test_mysqli_num_fields($link, $query, $expected, $offset,
$test_free = false) {
if (!($res = mysqli_query($link, $query))) {
printf("[%03d] [%d] %s\n", $offset,
mysqli_errno($link), mysqli_error($link));
return;
}
if ($expected !== ($tmp = mysqli_num_fields($res)))
printf("[%03d] Expecting %s/%d, got %s/%d\n", $offset +
1,
gettype($expected), $expected,
gettype($tmp), $tmp);
mysqli_free_result($res);
if ($test_free && (NULL !== ($tmp = mysqli_num_fields($res))))
printf("[%03d] Expecting NULL, got %s/%s\n", $offset +
2, gettype($tmp), $tmp);
}
func_test_mysqli_num_fields($link, "SELECT 1 AS a", 1, 5);
func_test_mysqli_num_fields($link, "SELECT id, label FROM test", 2, 10);
func_test_mysqli_num_fields($link, "SELECT 1 AS a, NULL AS b, 'foo' AS
c", 3, 15);
func_test_mysqli_num_fields($link, "SELECT id FROM test", 1, 20, true);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Warning: mysqli_num_fields(): Couldn't fetch mysqli_result in %s on line %d
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_num_rows.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_num_rows.phpt
+++ php-src/ext/mysqli/tests/mysqli_num_rows.phpt
--TEST--
mysqli_num_rows()
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include "connect.inc";
$tmp = NULL;
$link = NULL;
if (!is_null($tmp = @mysqli_num_rows()))
printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!is_null($tmp = @mysqli_num_rows($link)))
printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
require('table.inc');
function func_test_mysqli_num_rows($link, $query, $expected, $offset,
$test_free = false) {
if (!$res = mysqli_query($link, $query, MYSQLI_STORE_RESULT)) {
printf("[%03d] [%d] %s\n", $offset,
mysqli_errno($link), mysqli_error($link));
return;
}
if ($expected !== ($tmp = mysqli_num_rows($res)))
printf("[%03d] Expecting %s/%d, got %s/%d\n", $offset +
1,
gettype($expected), $expected,
gettype($tmp), $tmp);
mysqli_free_result($res);
if ($test_free && (NULL !== ($tmp = mysqli_num_rows($res))))
printf("[%03d] Expecting NULL, got %s/%s\n", $offset +
2, gettype($tmp), $tmp);
}
func_test_mysqli_num_rows($link, "SELECT 1 AS a", 1, 5);
func_test_mysqli_num_rows($link, "SHOW VARIABLES LIKE '%nixnutz%'", 0,
10);
func_test_mysqli_num_rows($link, "INSERT INTO test(id, label) VALUES
(100, 'z')", NULL, 15);
func_test_mysqli_num_rows($link, "SELECT id FROM test LIMIT 2", 2, 20,
true);
if ($res = mysqli_query($link, 'SELECT COUNT(id) AS num FROM test')) {
$row = mysqli_fetch_assoc($res);
mysqli_free_result($res);
func_test_mysqli_num_rows($link, "SELECT id, label FROM test",
(int)$row['num'], 25);
} else {
printf("[030] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
}
print "run_tests.php don't fool me with your 'ungreedy' expression
'.+?'!\n";
if ($res = mysqli_query($link, 'SELECT id FROM test',
MYSQLI_USE_RESULT)) {
$row = mysqli_fetch_row($res);
if (0 !== ($tmp = mysqli_num_rows($res)))
printf("[031] Expecting int/0, got %s/%d\n",
gettype($tmp), $tmp);
mysqli_free_result($res);
} else {
printf("[032] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
}
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean
given in %s on line %d
Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean
given in %s on line %d
Warning: mysqli_num_rows(): Couldn't fetch mysqli_result in %s on line %d
run_tests.php don't fool me with your 'ungreedy' expression '.+?'!
Warning: mysqli_num_rows(): Function cannot be used with MYSQL_USE_RESULT in %s
on line %d
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_options_init_command.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_options_init_command.phpt
+++ php-src/ext/mysqli/tests/mysqli_options_init_command.phpt
--TEST--
mysqli_options()
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
die("skip - STUB - TODO - this is a stub to remind me that we should also
actually test the options");
?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
/* see mysqli.c for details */
include "connect.inc";
print "done!";
?>
--EXPECTF--
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_options_openbasedir.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_options_openbasedir.phpt
+++ php-src/ext/mysqli/tests/mysqli_options_openbasedir.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_options.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_options.phpt
+++ php-src/ext/mysqli/tests/mysqli_options.phpt
--TEST--
mysqli_options()
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include "connect.inc";
$valid_options = array( MYSQLI_READ_DEFAULT_GROUP,
MYSQLI_READ_DEFAULT_FILE,
MYSQLI_OPT_CONNECT_TIMEOUT, MYSQLI_OPT_LOCAL_INFILE,
MYSQLI_INIT_COMMAND, MYSQLI_READ_DEFAULT_GROUP,
MYSQLI_READ_DEFAULT_FILE, MYSQLI_OPT_CONNECT_TIMEOUT,
MYSQLI_OPT_LOCAL_INFILE, MYSQLI_INIT_COMMAND,
MYSQLI_SET_CHARSET_NAME);
if ($IS_MYSQLND && defined('MYSQLI_OPT_INT_AND_YEARS_AS_INT'))
$valid_options[] = constant('MYSQLI_OPT_INT_AND_YEARS_AS_INT');
if (defined('MYSQLI_OPT_NUMERIC_AND_DATETIME_AS_UNICODE'))
$valid_options[] =
constant('MYSQLI_OPT_NUMERIC_AND_DATETIME_AS_UNICODE');
$tmp = NULL;
$link = NULL;
if (!is_null($tmp = @mysqli_options()))
printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!is_null($tmp = @mysqli_options($link)))
printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
$link = mysqli_init();
if (!is_null($tmp = @mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT)))
printf("[003] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!is_null($tmp = @mysqli_options($link, "s", 'extra_my.cnf')))
printf("[004] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!is_null($tmp = @mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET
AUTOCOMMIT=0', 'foo')))
printf("[005] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
// print "run_tests.php don't fool me with your 'ungreedy' expression
'.+?'!\n";
var_dump("MYSQLI_READ_DEFAULT_GROUP", mysqli_options($link,
MYSQLI_READ_DEFAULT_GROUP, 'extra_my.cnf'));
var_dump("MYSQLI_READ_DEFAULT_FILE", mysqli_options($link,
MYSQLI_READ_DEFAULT_FILE, 'extra_my.cnf'));
var_dump("MYSQLI_OPT_CONNECT_TIMEOUT", mysqli_options($link,
MYSQLI_OPT_CONNECT_TIMEOUT, 10));
var_dump("MYSQLI_OPT_LOCAL_INFILE", mysqli_options($link,
MYSQLI_OPT_LOCAL_INFILE, 1));
var_dump("MYSQLI_INIT_COMMAND", mysqli_options($link,
MYSQLI_INIT_COMMAND, array('SET AUTOCOMMIT=0', 'SET AUTOCOMMIT=1')));
var_dump("MYSQLI_READ_DEFAULT_GROUP", mysqli_options($link,
MYSQLI_READ_DEFAULT_GROUP, 'extra_my.cnf'));
var_dump("MYSQLI_READ_DEFAULT_FILE", mysqli_options($link,
MYSQLI_READ_DEFAULT_FILE, 'extra_my.cnf'));
var_dump("MYSQLI_OPT_CONNECT_TIMEOUT", mysqli_options($link,
MYSQLI_OPT_CONNECT_TIMEOUT, 10));
var_dump("MYSQLI_OPT_LOCAL_INFILE", mysqli_options($link,
MYSQLI_OPT_LOCAL_INFILE, 1));
var_dump("MYSQLI_INIT_COMMAND", mysqli_options($link,
MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT=0'));
var_dump("MYSQLI_CLIENT_SSL", mysqli_options($link,
MYSQLI_CLIENT_SSL, 'not an mysqli_option'));
if ($IS_MYSQLND && defined('MYSQLI_OPT_INT_AND_YEARS_AS_INT') &&
!($tmp = mysqli_options($link,
constant('MYSQLI_OPT_INT_AND_YEARS_AS_INT'), true)))
printf("[006] Expecting boolean/true got %s/%s\n",
gettype($tmp), $tmp);
if (defined('MYSQLI_OPT_NUMERIC_AND_DATETIME_AS_UNICODE') &&
!($tmp = mysqli_options($link,
constant('MYSQLI_OPT_NUMERIC_AND_DATETIME_AS_UNICODE'), true)))
printf("[006] Expecting boolean/true got %s/%s\n",
gettype($tmp), $tmp);
for ($flag = -10000; $flag < 10000; $flag++) {
if (in_array($flag, $valid_options))
continue;
if (FALSE !== ($tmp = mysqli_options($link, $flag, 'definetely
not an mysqli_option'))) {
var_dump("SOME_FLAG", $flag, $tmp);
}
}
mysqli_close($link);
echo "Link closed";
var_dump("MYSQLI_INIT_COMMAND", mysqli_options($link,
MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT=1'));
var_dump("SOME_RANDOM_FLAG", mysqli_options($link, $flag, 'definetly
not an mysqli_option'));
print "done!";
?>
--EXPECTF--
%s(25) "MYSQLI_READ_DEFAULT_GROUP"
bool(true)
%s(24) "MYSQLI_READ_DEFAULT_FILE"
bool(true)
%s(26) "MYSQLI_OPT_CONNECT_TIMEOUT"
bool(true)
%s(23) "MYSQLI_OPT_LOCAL_INFILE"
bool(true)
%s(19) "MYSQLI_INIT_COMMAND"
bool(true)
%s(25) "MYSQLI_READ_DEFAULT_GROUP"
bool(true)
%s(24) "MYSQLI_READ_DEFAULT_FILE"
bool(true)
%s(26) "MYSQLI_OPT_CONNECT_TIMEOUT"
bool(true)
%s(23) "MYSQLI_OPT_LOCAL_INFILE"
bool(true)
%s(19) "MYSQLI_INIT_COMMAND"
bool(true)
%s(17) "MYSQLI_CLIENT_SSL"
bool(false)
Link closed
Warning: mysqli_options(): Couldn't fetch mysqli in %s line %d
%s(19) "MYSQLI_INIT_COMMAND"
NULL
Warning: mysqli_options(): Couldn't fetch mysqli in %s line %d
%s(16) "SOME_RANDOM_FLAG"
NULL
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_pconn_disabled.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_pconn_disabled.phpt
+++ php-src/ext/mysqli/tests/mysqli_pconn_disabled.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_pconnect.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_pconnect.phpt
+++ php-src/ext/mysqli/tests/mysqli_pconnect.phpt
--TEST--
mysqli_pconnect()
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!stristr(mysqli_get_client_info(), 'mysqlnd'))
die("skip: only available in mysqlnd");
?>
--FILE--
<?php
include "connect.inc";
$host = 'p:' . $host;
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
printf("[002] Cannot connect to the server using host=%s,
user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
$host, $user, $db, $port, $socket);
mysqli_close($link);
$num = 20;
$connections = array();
for ($i = 0; $i < $num; $i++) {
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port,
$socket))
printf("[003] Connect failed, [%d] %s\n",
mysqli_connect_errno(), mysqli_connect_error());
$connections[] = $link;
}
while (count($connections)) {
do {
$index = mt_rand(0, $num);
} while (!isset($connections[$index]));
mysqli_close($connections[$index]);
unset($connections[$index]);
}
$connections = array();
$num = 20;
for ($i = 0; $i < $num; $i++) {
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port,
$socket))
printf("[004] Connect failed, [%d] %s\n",
mysqli_connect_errno(), mysqli_connect_error());
$connections[] = $link;
}
$left = $num;
while (count($connections) && $left > 0) {
do {
$index = mt_rand(0, $num);
} while (!isset($connections[$index]) && $left > 0);
if (mt_rand(0, 1) > 0) {
$left--;
mysqli_close($connections[$index]);
unset($connections[$index]);
} else {
$left--;
if (!$connections[$index] = mysqli_connect($host,
$user, $passwd, $db, $port, $socket))
printf("[004] Connect failed, [%d] %s\n",
mysqli_connect_errno(), mysqli_connect_error());
}
flush();
}
while (count($connections)) {
do {
$index = mt_rand(0, $num);
} while (!isset($connections[$index]));
mysqli_close($connections[$index]);
unset($connections[$index]);
}
print "done!";
?>
--EXPECTF--
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_pconn_kill.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_pconn_kill.phpt
+++ php-src/ext/mysqli/tests/mysqli_pconn_kill.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_pconn_limits.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_pconn_limits.phpt
+++ php-src/ext/mysqli/tests/mysqli_pconn_limits.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_pconn_max_links.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_pconn_max_links.phpt
+++ php-src/ext/mysqli/tests/mysqli_pconn_max_links.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_pconn_reuse.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_pconn_reuse.phpt
+++ php-src/ext/mysqli/tests/mysqli_pconn_reuse.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_phpinfo.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_phpinfo.phpt
+++ php-src/ext/mysqli/tests/mysqli_phpinfo.phpt
--TEST--
phpinfo() mysqli section
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include("connect.inc");
@ob_clean();
ob_start();
phpinfo();
$phpinfo = ob_get_contents();
ob_end_clean();
/* all versions should at least dump this minimum information */
if (!stristr($phpinfo, "mysqli support"))
printf("[001] ext/mysqli should have exposed itself.\n");
if (!stristr($phpinfo, "client api library version"))
printf("[002] ext/mysqli should have exposed the library
version.\n");
if (!stristr($phpinfo, "mysqli.default_host"))
printf("[003] php.ini setting mysqli.default_host not
shown.\n");
if (!stristr($phpinfo, "mysqli.default_port"))
printf("[004] php.ini setting mysqli.default_port not
shown.\n");
if (!stristr($phpinfo, "mysqli.default_pw"))
printf("[005] php.ini setting mysqli.default_pw not shown.\n");
if (!stristr($phpinfo, "mysqli.default_socket"))
printf("[006] php.ini setting mysqli.default_socket not
shown.\n");
if (!stristr($phpinfo, "mysqli.default_user"))
printf("[007] php.ini setting mysqli.default_user not
shown.\n");
if (!stristr($phpinfo, "mysqli.max_links"))
printf("[008] php.ini setting mysqli.max_links not shown.\n");
if (!stristr($phpinfo, "mysqli.reconnect"))
printf("[009] php.ini setting mysqli.reconnect not shown.\n");
if ($IS_MYSQLND) {
$expected = array(
'client statistics',
'bytes_sent', 'bytes_received', 'packets_sent',
'packets_received',
'protocol_overhead_in', 'protocol_overhead_out',
'result_set_queries',
'non_result_set_queries', 'no_index_used',
'bad_index_used',
'buffered_sets', 'unbuffered_sets', 'ps_buffered_sets',
'ps_unbuffered_sets',
'flushed_normal_sets', 'flushed_ps_sets',
'rows_fetched_from_server',
'rows_fetched_from_client', 'rows_skipped',
'copy_on_write_saved',
'copy_on_write_performed', 'command_buffer_too_small',
'connect_success',
'connect_failure', 'connection_reused',
'explicit_close', 'implicit_close',
'disconnect_close', 'in_middle_of_command_close',
'explicit_free_result',
'implicit_free_result', 'explicit_stmt_close',
'implicit_stmt_close',
'put_hits', 'put_misses', 'get_hits', 'get_misses',
'size', 'free_items', 'references', 'mysqli.cache_size',
'mysql.allow_local_infile'
);
foreach ($expected as $k => $entry)
if (!stristr($phpinfo, $entry))
printf("[010] Could not find entry for '%s'\n",
$entry);
}
print "done!";
?>
--EXPECTF--
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_ping.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_ping.phpt
+++ php-src/ext/mysqli/tests/mysqli_ping.phpt
--TEST--
mysqli_ping()
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include "connect.inc";
$tmp = NULL;
$link = NULL;
if (!is_null($tmp = @mysqli_ping()))
printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
require('table.inc');
if (!is_null($tmp = @mysqli_ping($link, $link)))
printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
var_dump(mysqli_ping($link));
// provoke an error to check if mysqli_ping resets it
$res = mysqli_query($link, 'SELECT * FROM unknown_table');
if (!($errno = mysqli_errno($link)))
printf("[003] Statement should have caused an error\n");
var_dump(mysqli_ping($link));
if ($errno === mysqli_errno($link))
printf("[004] Error codes should have been reset\n");
mysqli_close($link);
if (!is_null($tmp = mysqli_ping($link)))
printf("[005] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
print "done!";
?>
--EXPECTF--
bool(true)
bool(true)
Warning: mysqli_ping(): Couldn't fetch mysqli in %s on line %d
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_prepare_no_object.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_prepare_no_object.phpt
+++ php-src/ext/mysqli/tests/mysqli_prepare_no_object.phpt
--TEST--
mysqli_prepare() - no object on failure
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include "connect.inc";
require('table.inc');
if (false !== ($tmp = mysqli_prepare($link, false)))
printf("[001] Expecting boolean/false, got %s/%s\n",
gettype($tmp), (is_object($tmp) ? var_dump($tmp, true) : $tmp));
printf("a) [%d] %s\n", mysqli_errno($link), mysqli_error($link));
if (false !== ($tmp = mysqli_prepare($link, '')))
printf("[002] Expecting boolean/false, got %s/%s\n",
gettype($tmp), (is_object($tmp) ? var_dump($tmp, true) : $tmp));
printf("b) [%d] %s\n", mysqli_errno($link), mysqli_error($link));
mysqli_close($link);
if (!$mysqli = new mysqli($host, $user, $passwd, $db, $port, $socket))
printf("[003] Cannot connect to the server using host=%s,
user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
$host, $user, $db, $port, $socket);
if (false !== ($tmp = $mysqli->prepare(false)))
printf("[004] Expecting boolean/false, got %s/%s\n",
gettype($tmp), (is_object($tmp) ? var_dump($tmp, true) : $tmp));
printf("c) [%d] %s\n", $mysqli->errno, $mysqli->error);
if (false !== ($tmp = $mysqli->prepare('')))
printf("[005] Expecting boolean/false, got %s/%s\n",
gettype($tmp), (is_object($tmp) ? var_dump($tmp, true) : $tmp));
printf("c) [%d] %s\n", $mysqli->errno, $mysqli->error);
print "done!";
?>
--EXPECTF--
a) [1065] Query was empty
b) [1065] Query was empty
c) [1065] Query was empty
c) [1065] Query was empty
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_prepare.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_prepare.phpt
+++ php-src/ext/mysqli/tests/mysqli_prepare.phpt
--TEST--
mysqli_prepare()
--SKIPIF--
<?php require_once('skipif.inc'); ?>
<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include "connect.inc";
$tmp = NULL;
$link = NULL;
if (!is_null($tmp = @mysqli_prepare()))
printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
if (!is_null($tmp = @mysqli_prepare($link)))
printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
require('table.inc');
if (false !== ($tmp = @mysqli_prepare($link, false)))
printf("[003] Expecting boolean/false, got %s\n",
gettype($tmp));
if (!$res = mysqli_query($link, "SELECT id, label FROM test",
MYSQLI_USE_RESULT))
printf("[004] [%d] %s, next test will fail\n",
mysqli_errno($link), mysqli_error($link));
if (false !== ($tmp = mysqli_prepare($link, 'SELECT id FROM test WHERE
id > ?')))
printf("[005] Expecting boolean/false, got %s, [%d] %s\n",
gettype($tmp), mysqli_errno($link), mysqli_error($link));
mysqli_free_result($res);
if (!is_object(($stmt = mysqli_prepare($link, 'SELECT id FROM test')))
|| !mysqli_stmt_execute($stmt))
printf("[006][%d] %s\n", mysqli_errno($link),
mysqli_error($link));
mysqli_stmt_close($stmt);
if (!mysqli_query($link, "DROP TABLE IF EXISTS test2"))
printf("[007] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!is_object(($stmt = mysqli_prepare($link, 'CREATE TABLE test2(id
INT) ENGINE =' . $engine))) || !mysqli_stmt_execute($stmt))
printf("[008] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
mysqli_stmt_close($stmt);
if (!is_object(($stmt = mysqli_prepare($link, 'INSERT INTO test2(id)
VALUES(?)'))))
printf("[009] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
$id = 1;
if (!mysqli_bind_param($stmt, 'i', $id) || !mysqli_stmt_execute($stmt))
printf("[010] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
mysqli_stmt_close($stmt);
if (!is_object(($stmt = mysqli_prepare($link, 'REPLACE INTO test2(id)
VALUES (?)'))))
printf("[011] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
$id = 2;
if (!mysqli_bind_param($stmt, 'i', $id) || !mysqli_stmt_execute($stmt))
printf("[012] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
mysqli_stmt_close($stmt);
if (!is_object(($stmt = mysqli_prepare($link, 'UPDATE test2 SET id = ?
WHERE id = ?'))))
printf("[013] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
$id = 3;
$where = 2;
if (!mysqli_bind_param($stmt, 'ii', $id, $where) ||
!mysqli_stmt_execute($stmt))
printf("[014] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
mysqli_stmt_close($stmt);
if (!is_object(($stmt = mysqli_prepare($link, 'DELETE FROM test2 WHERE
id = ?'))))
printf("[015] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
$where = 3;
if (!mysqli_bind_param($stmt, 'i', $where) ||
!mysqli_stmt_execute($stmt))
printf("[016] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
mysqli_stmt_close($stmt);
if (!is_object(($stmt = mysqli_prepare($link, 'SET @testvar = ?'))))
printf("[017] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
$testvar = 'testvar';
if (!mysqli_bind_param($stmt, 's', $testvar) ||
!mysqli_stmt_execute($stmt))
printf("[018] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
mysqli_stmt_close($stmt);
if (!is_object(($stmt = mysqli_prepare($link, 'DO GET_LOCK("testlock",
1)'))))
printf("[019] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
mysqli_stmt_close($stmt);
if (!is_object(($stmt = mysqli_prepare($link, 'SELECT id, @testvar FROM
test2'))))
printf("[020] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
$id = $testvar = null;
if (!mysqli_stmt_execute($stmt) || !mysqli_stmt_bind_result($stmt, $id,
$testvar))
printf("[021] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
while (mysqli_stmt_fetch($stmt)) {
if (('testvar' !== $testvar) || (1 !== $id))
printf("[022] Expecting 'testvar'/1, got %s/%s. [%d]
%s\n",
$testvar, $id, mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
}
var_dump(mysqli_stmt_prepare($stmt, 'SELECT 1; SELECT 2'));
mysqli_stmt_close($stmt);
if (!is_null($tmp = @mysqli_stmt_prepare($link, 'SELECT id FROM test',
'foo')))
printf("[023] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
mysqli_close($link);
if (!is_null($tmp = @mysqli_stmt_prepare($link, 'SELECT id FROM test')))
printf("[024] Expecting NULL, got %s/%s\n", gettype($tmp),
$tmp);
print "done!";
?>
--EXPECTF--
bool(false)
done!
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php