mysqli_debug_control_string.phpt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. --TEST--
  2. mysqli_debug() - invalid debug control strings
  3. --SKIPIF--
  4. <?php
  5. require_once('skipif.inc');
  6. require_once('skipifemb.inc');
  7. require_once('skipifconnectfailure.inc');
  8. if (!function_exists('mysqli_debug'))
  9. die("skip: mysqli_debug() not available");
  10. if (!defined('MYSQLI_DEBUG_TRACE_ENABLED'))
  11. die("skip: can't say for sure if mysqli_debug works");
  12. if (defined('MYSQLI_DEBUG_TRACE_ENABLED') && !MYSQLI_DEBUG_TRACE_ENABLED)
  13. die("skip: debug functionality not enabled");
  14. if (!$IS_MYSQLND)
  15. die("SKIP Libmysql feature not sufficiently spec'd in MySQL C API documentation");
  16. ?>
  17. --FILE--
  18. <?php
  19. require_once('connect.inc');
  20. require_once('table.inc');
  21. function try_control_string($link, $control_string, $trace_file, $offset) {
  22. if (true !== ($tmp = mysqli_debug($control_string))) {
  23. printf("[%03d][control string '%s'] Expecting boolean/true, got %s/%s.\n",
  24. $offset + 1,
  25. $control_string,
  26. gettype($tmp),
  27. $tmp);
  28. return false;
  29. }
  30. if (!$res = mysqli_query($link, 'SELECT * FROM test')) {
  31. printf("[%03d][control string '%s'] [%d] %s.\n",
  32. $offset + 2,
  33. $control_string,
  34. mysqli_errno($link),
  35. mysqli_error($link));
  36. return false;
  37. }
  38. clearstatcache();
  39. if (!file_exists($trace_file)) {
  40. printf("[%03d][control string '%s'] Trace file has not been written.\n",
  41. $offset + 3,
  42. $control_string,
  43. gettype($tmp),
  44. $tmp);
  45. return false;
  46. }
  47. unlink($trace_file);
  48. }
  49. $trace_file = sprintf('%s%s%s', sys_get_temp_dir(), DIRECTORY_SEPARATOR, 'mysqli_debug_phpt.trace');
  50. try_control_string($link, 't:,,:o,' . $trace_file, $trace_file, 10);
  51. try_control_string($link, ':' . chr(0) . 'A,' . $trace_file, $trace_file, 20);
  52. try_control_string($link, 't:o,' . $trace_file . ':abc', $trace_file, 30);
  53. try_control_string($link, 't:o,' . $trace_file . ':ABC,123:b', $trace_file, 40);
  54. try_control_string($link, 't:ABC,123:b;:o,' . $trace_file, $trace_file, 50);
  55. try_control_string($link, 't:A;BC,123:b;:o,' . $trace_file, $trace_file, 60);
  56. try_control_string($link, 't:p:o,' . $trace_file, $trace_file, 70);
  57. try_control_string($link, 't:p,1,,2:o,' . $trace_file, $trace_file, 80);
  58. try_control_string($link, 't:z,1,,2:o,' . $trace_file, $trace_file, 90);#
  59. mysqli_close($link);
  60. print "done";
  61. if ($IS_MYSQLND)
  62. print "libmysql/DBUG package prints some debug info here."
  63. ?>
  64. --EXPECTF--
  65. [023][control string '%s'] Trace file has not been written.
  66. done%s