diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/mysqli/tests/mysqli_multi_query.phpt | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/mysqli/tests/mysqli_multi_query.phpt')
-rw-r--r-- | ext/mysqli/tests/mysqli_multi_query.phpt | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/ext/mysqli/tests/mysqli_multi_query.phpt b/ext/mysqli/tests/mysqli_multi_query.phpt new file mode 100644 index 0000000..91c07c2 --- /dev/null +++ b/ext/mysqli/tests/mysqli_multi_query.phpt @@ -0,0 +1,162 @@ +--TEST-- +mysqli_multi_query() +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifemb.inc'); +require_once('skipifconnectfailure.inc'); +?> +--FILE-- +<?php + require_once("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 set@ismU', $tmp)) { + printf("[005a] Strict Standards warning missing\n"); + } else { + $tmp = trim(preg_replace('@Strict Standards: mysqli_next_result\(\).*on line \d+@ism', '', $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 set@ismU', $tmp)) { + printf("[009a] Strict Standards warning missing\n"); + } else { + $tmp = trim(preg_replace('@Strict Standards: mysqli_next_result\(\).*on line \d+@ism', '', $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!"; +?> +--CLEAN-- +<?php + require_once("clean_table.inc"); +?> +--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!
\ No newline at end of file |