uw              Wed May 27 17:50:09 2009 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/ext/mysqli/tests   mysqli_stmt_execute.phpt 
  Log:
  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().
  
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_stmt_execute.phpt?r1=1.2.2.3&r2=1.2.2.4&diff_format=u
Index: php-src/ext/mysqli/tests/mysqli_stmt_execute.phpt
diff -u php-src/ext/mysqli/tests/mysqli_stmt_execute.phpt:1.2.2.3 
php-src/ext/mysqli/tests/mysqli_stmt_execute.phpt:1.2.2.4
--- php-src/ext/mysqli/tests/mysqli_stmt_execute.phpt:1.2.2.3   Thu Apr 24 
14:22:19 2008
+++ php-src/ext/mysqli/tests/mysqli_stmt_execute.phpt   Wed May 27 17:50:09 2009
@@ -62,56 +62,66 @@
        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
  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



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to