From: Ulf Wendel Date: Wed, 27 May 2009 17:50:09 +0000 (+0000) Subject: Testing a little further into the direction of a possible mysqlnd vs. libmysql compat... X-Git-Tag: php-5.3.0RC3~122 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b3645db1ce6ae179ddf5b7500c2cab8860d60013;p=php Testing a little further into the direction of a possible mysqlnd vs. libmysql compatibility break or a libmysql bug. It is not clearly stated in the MySQL C-API documentation what excactly happens on stmt_reset(). --- diff --git a/ext/mysqli/tests/mysqli_stmt_execute.phpt b/ext/mysqli/tests/mysqli_stmt_execute.phpt index 6f3df35d6b..f3c34c517c 100644 --- a/ext/mysqli/tests/mysqli_stmt_execute.phpt +++ b/ext/mysqli/tests/mysqli_stmt_execute.phpt @@ -62,56 +62,66 @@ require_once('skipifconnectfailure.inc'); if (!$stmt = mysqli_stmt_init($link)) printf("[013] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); - if (!mysqli_stmt_prepare($stmt, "SELECT id FROM test ORDER BY id LIMIT 1")) + if (!mysqli_stmt_prepare($stmt, "SELECT id FROM test ORDER BY id LIMIT ?")) printf("[014] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); + $limit = 1; + if (!mysqli_stmt_bind_param($stmt, "i", $limit)) + printf("[015] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); + if (true !== ($tmp = mysqli_stmt_execute($stmt))) - printf("[015] Expecting boolean/true, got %s/%s. [%d] %s\n", + printf("[016] Expecting boolean/true, got %s/%s. [%d] %s\n", gettype($tmp), $tmp, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); $id = null; if (!mysqli_stmt_bind_result($stmt, $id) || !mysqli_stmt_fetch($stmt)) - printf("[016] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); + printf("[017] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); if ($id !== 1) - printf("[017] Expecting int/1 got %s/%s\n", gettype($id), $id); + printf("[018] Expecting int/1 got %s/%s\n", gettype($id), $id); if (true !== ($tmp = mysqli_stmt_reset($stmt))) - printf("[018] Expecting boolean/true, got %s/%s. [%d] %s\n", + printf("[019] Expecting boolean/true, got %s/%s. [%d] %s\n", gettype($tmp), $tmp, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); - printf("Don't know what we should expect\n"); - var_dump(mysqli_stmt_execute($stmt)); - var_dump(mysqli_stmt_fetch($stmt)); + if (true !== ($tmp = mysqli_stmt_execute($stmt))) + printf("[020] Expecting boolean/true after reset to prepare status, got %s/%s. [%d] %s\n", + gettype($tmp), $tmp, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); + + $id = null; + if (!mysqli_stmt_fetch($stmt)) + printf("[021] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); + + if ($id !== 1) + printf("[022] Expecting int/1 got %s/%s\n", gettype($id), $id); mysqli_stmt_close($stmt); if (!$stmt = mysqli_stmt_init($link)) - printf("[019] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); + printf("[023] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); if (!mysqli_stmt_prepare($stmt, "SELECT id FROM test ORDER BY id LIMIT 1")) - printf("[020] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); + printf("[024] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); if (true !== ($tmp = mysqli_stmt_execute($stmt))) - printf("[021] Expecting boolean/true, got %s/%s. [%d] %s\n", + printf("[025] Expecting boolean/true, got %s/%s. [%d] %s\n", gettype($tmp), $tmp, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); if (true !== ($tmp = mysqli_stmt_reset($stmt))) - printf("[022] Expecting boolean/true, got %s/%s. [%d] %s\n", + printf("[026] Expecting boolean/true, got %s/%s. [%d] %s\n", gettype($tmp), $tmp, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); - printf("Don't know what we should expect\n"); var_dump(mysqli_stmt_execute($stmt)); var_dump(mysqli_stmt_fetch($stmt)); mysqli_kill($link, mysqli_thread_id($link)); if (false !== ($tmp = mysqli_stmt_execute($stmt))) - printf("[023] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp); + printf("[027] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp); mysqli_stmt_close($stmt); if (NULL !== ($tmp = mysqli_stmt_execute($stmt))) - printf("[024] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); + printf("[028] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); mysqli_close($link); print "done!"; @@ -122,6 +132,9 @@ Warning: mysqli_stmt_execute(): invalid object or resource mysqli_stmt Warning: mysqli_stmt_execute(): invalid object or resource mysqli_stmt in %s on line %d +bool(true) +bool(true) +[027] Expecting boolean/false, got boolean/1 Warning: mysqli_stmt_execute(): Couldn't fetch mysqli_stmt in %s on line %d done! \ No newline at end of file