public function connect() { require_once "connect.inc"; $link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket); var_dump($link); $link = mysqli_init(); /* @ is to suppress 'Property access is not allowed yet' */ @var_dump($link); $mysql = new my_mysqli($host, $user, $passwd, $db, $port, $socket); $mysql->query("DROP TABLE IF EXISTS test_bug34810_table_1"); $mysql->query("CREATE TABLE test_bug34810_table_1 (a int not null)"); $mysql->query("SET sql_mode=''"); $mysql->query("INSERT INTO test_bug34810_table_1 VALUES (1),(2),(NULL)"); $warning = $mysql->get_warnings(); if (!$warning) { printf("[001] No warning!\n"); } if ($warning->errno == 1048 || $warning->errno == 1253) { /* 1048 - Column 'a' cannot be null, 1263 - Data truncated; NULL supplied to NOT NULL column 'a' at row */ if ("HY000" != $warning->sqlstate) { printf("[003] Wrong sql state code: %s\n", $warning->sqlstate); } if ("" == $warning->message) { printf("[004] Message string must not be empty\n"); } } else { printf("[002] Empty error message!\n"); var_dump($warning); } }
function get_connection() { global $host, $user, $passwd, $db, $port, $socket; if (!($link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))) { printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } return $link; }
<?php require_once "connect.inc"; /*** test mysqli_connect 127.0.0.1 ***/ $link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket); mysqli_select_db($link, $db); mysqli_query($link, "DROP TABLE IF EXISTS test_037_table_1"); mysqli_query($link, "CREATE TABLE test_037_table_1 (a int, b varchar(10)) ENGINE = " . $engine); mysqli_query($link, "INSERT INTO test_037_table_1 VALUES (1, 'foo')"); $ir[] = mysqli_field_count($link); mysqli_real_query($link, "SELECT * FROM test_037_table_1"); $ir[] = mysqli_field_count($link); var_dump($ir); mysqli_query($link, "DROP TABLE IF EXISTS test_037_table_1"); mysqli_close($link); print "done!"; require_once "connect.inc"; if (!($link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))) { printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } if (!mysqli_query($link, "DROP TABLE IF EXISTS test_037_table_1")) { printf("[c002] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link)); } mysqli_close($link);
<?php require_once "connect.inc"; if (!($link = my_mysqli_connect($host, 'shatest', 'shatest', $db, $port, $socket))) { printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n", $host, "shatest", $db, $port, $socket); } else { if (!($res = $link->query("SELECT id FROM test WHERE id = 1"))) { printf("[002] [%d] %s\n", $link->errno, $link->error); } if (!($row = mysqli_fetch_assoc($res))) { printf("[003] [%d] %s\n", $link->errno, $link->error); } if ($row['id'] != 1) { printf("[004] Expecting 1 got %s/'%s'", gettype($row['id']), $row['id']); } $res->close(); $link->close(); } print "done!"; $test_table_name = 'test_mysqli_pam_sha256_table_1'; require_once "clean_table.inc"; $link->query('DROP USER shatest'); $link->query('DROP USER shatest@localhost');
if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) { printf("[005] Cannot connect [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } else { $link->query("SELECT id FROM test WHERE id = 1"); printf("[006] Connect allowed, query fail, [%d] %s\n", $link->errno, $link->error); $link->close(); } /* allow connect, fix pw */ $link = mysqli_init(); $link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1); if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) { printf("[007] Cannot connect [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } else { $link->query("SET PASSWORD=PASSWORD('expiretest')"); printf("[008] Connect allowed, pw set, [%d] %s\n", $link->errno, $link->error); if ($res = $link->query("SELECT id FROM test WHERE id = 1")) { var_dump($res->fetch_assoc()); } $link->close(); } /* check login */ if (!($link = my_mysqli_connect($host, 'expiretest', "expiretest", $db, $port, $socket))) { printf("[001] Cannot connect [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } else { $link->query("SELECT id FROM test WHERE id = 1"); if ($res = $link->query("SELECT id FROM test WHERE id = 1")) { var_dump($res->fetch_assoc()); } $link->close(); } print "done!";
<?php require_once "connect.inc"; $test = ""; /*** test mysqli_connect localhost:port ***/ $link = my_mysqli_connect($host, $user, $passwd, "", $port, $socket); $test .= $link ? "1" : "0"; mysqli_close($link); /*** test mysqli_real_connect ***/ $link = mysqli_init(); $test .= my_mysqli_real_connect($link, $host, $user, $passwd, "", $port, $socket) ? "1" : "0"; mysqli_close($link); /*** test mysqli_real_connect with db ***/ $link = mysqli_init(); $test .= my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket) ? "1" : "0"; mysqli_close($link); /*** test mysqli_real_connect with port ***/ $link = mysqli_init(); $test .= my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket) ? "1" : "0"; mysqli_close($link); /* temporary addition for Kent's setup, Win32 box */ for ($i = 0; $i < 10; $i++) { if (!($link = mysqli_init())) { printf("[001 + %d] mysqli_init() failed, [%d] %s\n", $i, mysqli_connect_errno(), mysqli_connect_error()); } if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) { printf("[002 + %d] mysqli_real_connect() failed, [%d] %s\n", $i, mysqli_connect_errno(), mysqli_connect_error()); } mysqli_close($link); } /*** test mysqli_real_connect compressed ***/
<?php require_once "connect.inc"; $mysqli = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket); $result = $mysqli->query('select 1'); $result->close(); echo $result->num_rows; $mysqli->close(); echo $result->num_rows; echo "Done\n";
printf("[009] select_db should have failed\n"); } // mysqli_store_result() and mysqli_use_result() cannot be tested, because one would need to cause an error inside the C function to test it // Check that none of the above would have caused any error messages if MYSQL_REPORT_ERROR would // not have been set. If that would be the case, the test would be broken. mysqli_report(MYSQLI_REPORT_OFF); mysqli_multi_query($link, "BAR; FOO;"); mysqli_query($link, "FOO"); mysqli_change_user($link, "This might work if you accept anonymous users in your setup", "password", $db); mysqli_kill($link, -1); mysqli_real_query($link, "FOO"); mysqli_select_db($link, "Oh lord, let this be an unknown database name"); mysqli_report(MYSQLI_REPORT_OFF); mysqli_report(MYSQLI_REPORT_STRICT); try { if ($link = my_mysqli_connect($host, $user . 'unknown_really', $passwd . 'non_empty', $db, $port, $socket)) { printf("[010] Can connect to the server using host=%s, user=%s, passwd=***non_empty, dbname=%s, port=%s, socket=%s\n", $host, $user . 'unknown_really', $db, $port, $socket); } mysqli_close($link); } catch (mysqli_sql_exception $e) { printf("[011] %s\n", $e->getMessage()); } try { if (!($link = mysqli_init())) { printf("[012] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } if ($link = my_mysqli_real_connect($link, $host, $user . 'unknown_really', $passwd . 'non_empty', $db, $port, $socket)) { printf("[013] Can connect to the server using host=%s, user=%s, passwd=***non_empty, dbname=%s, port=%s, socket=%s\n", $host, $user . 'unknown_really', $db, $port, $socket); } mysqli_close($link); } catch (mysqli_sql_exception $e) {
for ($i = 0; $i < $num; $i++) { if (!($link = my_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] = my_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!";
<?php include "connect.inc"; $link1 = my_mysqli_connect($host, $user, $passwd, null, $port, $socket); mysqli_select_db($link1, $db); $link1->query("SELECT 'test'", MYSQLI_ASYNC); $all_links = array($link1); $links = $errors = $reject = $all_links; mysqli_poll($links, $errors, $reject, 1); echo "links: ", sizeof($links), "\n"; echo "errors: ", sizeof($errors), "\n"; echo "reject: ", sizeof($reject), "\n"; echo "all_links: ", sizeof($all_links), "\n"; $link1->close();
} if ($num_plinks_kill > $num_plinks) { printf("[011] Expecting Active Persistent Links < %d, got %d\n", $num_plinks, $num_plinks_kill); } if (!($plink = my_mysqli_connect('p:' . $host, 'pcontest', 'newpass', $db, $port, $socket))) { printf("[012] Cannot connect using the new password, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } if (!($res = mysqli_query($plink, 'SELECT id, label FROM test WHERE id = 1'))) { printf("[013] Cannot run query on persistent connection of second DB user, [%d] %s\n", mysqli_errno($plink), mysqli_error($plink)); } if (!($row = mysqli_fetch_assoc($res))) { printf("[014] Cannot run fetch result, [%d] %s\n", mysqli_errno($plink), mysqli_error($plink)); } mysqli_free_result($res); var_dump($row); if ($plink2 = my_mysqli_connect('p:' . $host, 'pcontest', 'newpass', $db, $port, $socket)) { printf("[015] Can open more persistent connections than allowed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); var_dump(mysqli_get_links_stats()); } ob_start(); phpinfo(); $phpinfo = strip_tags(ob_get_contents()); ob_end_clean(); $phpinfo = substr($phpinfo, stripos($phpinfo, 'MysqlI Support => enabled'), 500); if (!preg_match('@Active Persistent Links\\s+=>\\s+(\\d+)@ismU', $phpinfo, $matches)) { printf("[016] Cannot get # of active persistent links from phpinfo()\n"); } $num_plinks = $matches[1]; if ($num_plinks > (int) ini_get('mysqli.max_persistent')) { printf("[017] mysqli.max_persistent=%d allows %d open connections!\n", ini_get('mysqli.max_persistent'), $num_plinks); }