bug34810.phpt 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. --TEST--
  2. Bug #34810 (mysqli::init() and others use wrong $this pointer without checks)
  3. --SKIPIF--
  4. <?php
  5. require_once('skipif.inc');
  6. require_once('skipifconnectfailure.inc');
  7. ?>
  8. --FILE--
  9. <?php
  10. class DbConnection {
  11. public function connect() {
  12. require_once("connect.inc");
  13. $link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
  14. var_dump($link);
  15. $link = mysqli_init();
  16. /* @ is to suppress 'Property access is not allowed yet' */
  17. @var_dump($link);
  18. $mysql = new my_mysqli($host, $user, $passwd, $db, $port, $socket);
  19. $mysql->query("DROP TABLE IF EXISTS test_warnings");
  20. $mysql->query("CREATE TABLE test_warnings (a int not null)");
  21. $mysql->query("SET sql_mode=''");
  22. $mysql->query("INSERT INTO test_warnings VALUES (1),(2),(NULL)");
  23. $warning = $mysql->get_warnings();
  24. if (!$warning)
  25. printf("[001] No warning!\n");
  26. if ($warning->errno == 1048 || $warning->errno == 1253) {
  27. /* 1048 - Column 'a' cannot be null, 1263 - Data truncated; NULL supplied to NOT NULL column 'a' at row */
  28. if ("HY000" != $warning->sqlstate)
  29. printf("[003] Wrong sql state code: %s\n", $warning->sqlstate);
  30. if ("" == $warning->message)
  31. printf("[004] Message string must not be empty\n");
  32. } else {
  33. printf("[002] Empty error message!\n");
  34. var_dump($warning);
  35. }
  36. }
  37. }
  38. $db = new DbConnection();
  39. $db->connect();
  40. echo "Done\n";
  41. ?>
  42. --CLEAN--
  43. <?php
  44. require_once("connect.inc");
  45. if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
  46. printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
  47. if (!mysqli_query($link, "DROP TABLE IF EXISTS test_warnings"))
  48. printf("[c002] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  49. mysqli_close($link);
  50. ?>
  51. --EXPECTF--
  52. object(mysqli)#%d (%d) {
  53. [%u|b%"affected_rows"]=>
  54. int(0)
  55. [%u|b%"client_info"]=>
  56. %unicode|string%(%d) "%s"
  57. [%u|b%"client_version"]=>
  58. int(%d)
  59. [%u|b%"connect_errno"]=>
  60. int(0)
  61. [%u|b%"connect_error"]=>
  62. NULL
  63. [%u|b%"errno"]=>
  64. int(0)
  65. [%u|b%"error"]=>
  66. %unicode|string%(0) ""
  67. [%u|b%"error_list"]=>
  68. array(0) {
  69. }
  70. [%u|b%"field_count"]=>
  71. int(0)
  72. [%u|b%"host_info"]=>
  73. %unicode|string%(%d) "%s"
  74. [%u|b%"info"]=>
  75. NULL
  76. [%u|b%"insert_id"]=>
  77. int(0)
  78. [%u|b%"server_info"]=>
  79. %unicode|string%(%d) "%s"
  80. [%u|b%"server_version"]=>
  81. int(%d)
  82. [%u|b%"stat"]=>
  83. string(%d) "Uptime: %d Threads: %d Questions: %d Slow queries: %d Opens: %d Flush tables: %d Open tables: %d Queries per second avg: %d.%d"
  84. [%u|b%"sqlstate"]=>
  85. %unicode|string%(5) "00000"
  86. [%u|b%"protocol_version"]=>
  87. int(10)
  88. [%u|b%"thread_id"]=>
  89. int(%d)
  90. [%u|b%"warning_count"]=>
  91. int(0)
  92. }
  93. object(mysqli)#%d (%d) {
  94. [%u|b%"affected_rows"]=>
  95. NULL
  96. [%u|b%"client_info"]=>
  97. %unicode|string%(%d) "%s"
  98. [%u|b%"client_version"]=>
  99. int(%d)
  100. [%u|b%"connect_errno"]=>
  101. int(0)
  102. [%u|b%"connect_error"]=>
  103. NULL
  104. [%u|b%"errno"]=>
  105. int(0)
  106. [%u|b%"error"]=>
  107. %unicode|string%(0) ""
  108. [%u|b%"error_list"]=>
  109. NULL
  110. [%u|b%"field_count"]=>
  111. NULL
  112. [%u|b%"host_info"]=>
  113. NULL
  114. [%u|b%"info"]=>
  115. NULL
  116. [%u|b%"insert_id"]=>
  117. NULL
  118. [%u|b%"server_info"]=>
  119. NULL
  120. [%u|b%"server_version"]=>
  121. NULL
  122. [%u|b%"stat"]=>
  123. NULL
  124. [%u|b%"sqlstate"]=>
  125. NULL
  126. [%u|b%"protocol_version"]=>
  127. NULL
  128. [%u|b%"thread_id"]=>
  129. NULL
  130. [%u|b%"warning_count"]=>
  131. NULL
  132. }
  133. Done