mysqli_multi_query.phpt 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. --TEST--
  2. mysqli_multi_query()
  3. --EXTENSIONS--
  4. mysqli
  5. --SKIPIF--
  6. <?php
  7. require_once('skipifconnectfailure.inc');
  8. ?>
  9. --FILE--
  10. <?php
  11. require_once("connect.inc");
  12. require('table.inc');
  13. if (false !== ($tmp = mysqli_multi_query($link, "")))
  14. printf("[003] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp);
  15. 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"))
  16. printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  17. $i = 0;
  18. do {
  19. $res = mysqli_store_result($link);
  20. while ($row = mysqli_fetch_array($res))
  21. ;
  22. mysqli_free_result($res);
  23. $i++;
  24. } while (mysqli_next_result($link));
  25. printf("[006] %d\n", $i);
  26. 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"))
  27. printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  28. $i = 0;
  29. while (mysqli_next_result($link) && ($res = mysqli_store_result($link))) {
  30. while ($row = mysqli_fetch_array($res))
  31. ;
  32. mysqli_free_result($res);
  33. printf("%d/%d\n", $i, mysqli_insert_id($link));
  34. $i++;
  35. }
  36. printf("[008] %d\n", $i);
  37. if (!mysqli_multi_query($link, "SELECT id, label FROM test"))
  38. printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  39. $i = 0;
  40. while (mysqli_next_result($link) && ($res = mysqli_store_result($link))) {
  41. while ($row = mysqli_fetch_array($res))
  42. $i++;
  43. mysqli_free_result($res);
  44. }
  45. printf("[010] %d\n", $i);
  46. 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"))
  47. printf("[011] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  48. $res_num = 1;
  49. do {
  50. if (!$res = mysqli_store_result($link)) {
  51. printf("[012 - %d] [%d] %s\n", $res_num, mysqli_errno($link), mysqli_error($link));
  52. continue;
  53. }
  54. $num_rows = 0;
  55. while ($row = mysqli_fetch_array($res)) {
  56. $num_rows++;
  57. if ($row['num'] != $res_num)
  58. printf("[013 - %d] Expecting %s got %s\n", $res_num, $res_num, $row['num']);
  59. if ($row['somechar'] != "a")
  60. printf("[014 - %d] Expecting a got %s\n", $res_num, $row['somechar']);
  61. if (1 == $num_rows) {
  62. /* simple metadata check */
  63. if (!($lengths = mysqli_fetch_lengths($res)))
  64. printf("[015 - %d] [%d] %s\n", $res_num, mysqli_errno($link), mysqli_error($link));
  65. if (count($lengths) != 2)
  66. printf("[016 - %d] Expecting 2 column lengths got %d [%d] %s\n", $res_num, count($lengths));
  67. foreach ($lengths as $k => $length)
  68. if ($length <= 0)
  69. printf("[017 - %d] Strange column lengths for column %d, got %d expecting any > 0\n",
  70. $res_num, $k, $length);
  71. }
  72. }
  73. if ($num_rows != 1)
  74. printf("[018 - %d] Expecting 1 row, got %d rows\n", $num_rows);
  75. $res_num++;
  76. mysqli_free_result($res);
  77. } while (mysqli_next_result($link));
  78. if ($res_num != 4)
  79. printf("[015] Expecting 3 result sets got %d result set[s]\n", $res_num);
  80. mysqli_close($link);
  81. try {
  82. mysqli_multi_query($link, "SELECT id, label FROM test");
  83. } catch (Error $exception) {
  84. echo $exception->getMessage() . "\n";
  85. }
  86. print "done!";
  87. ?>
  88. --CLEAN--
  89. <?php
  90. require_once("clean_table.inc");
  91. ?>
  92. --EXPECT--
  93. [006] 3
  94. [008] 0
  95. [009] [2014] Commands out of sync; you can't run this command now
  96. [010] 7
  97. mysqli object is already closed
  98. done!