uw              Fri Jan  4 18:17:13 2008 UTC

  Added files:                 
    /php-src/ext/mysqli/tests   mysqli_fetch_assoc_zerofill.phpt 
                                mysqli_stmt_bind_result_zerofill.phpt 
                                mysqli_stmt_bind_param_call_user_func.phpt 

  Modified files:              
    /php-src/ext/mysqli/tests   mysqli_change_user_insert_id.phpt 
                                mysqli_insert_id.phpt 
  Log:
  Added:
  
    mysqli_fetch_assoc_zerofill.phpt
      checks for UNSIGNED ZEROFILL
  
    mysqli_stmt_bind_result_zerofill.phpt
      checks for UNSIGNED ZEROFILL
  
    mysqli_stmt_bing_call_user_func.phpt
      Needs to be refined once http://bugs.php.net/bug.php?id=43568
      has been closed and a decision has been made on call_user_func_array().
      There seems to be a BC break between 5_2 -> 5_3 .
      Johannes has an eye on it
  
  Modified:
  
    mysqli_change_user_insert_id.phpt
      skip test for buggy MySQL Server versions
  
    mysqli_insert_id.phpt
      added additional checks
  
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt
diff -u php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt:1.2 
php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt:1.3
--- php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt:1.2      Wed Oct 
10 10:43:39 2007
+++ php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt  Fri Jan  4 
18:17:13 2008
@@ -5,6 +5,15 @@
 require_once('skipif.inc');
 require_once('skipifemb.inc');
 require_once('skipifconnectfailure.inc');
+require_once('connect.inc');
+if (!$IS_MYSQLND) {
+       if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+               die("skip Can't test server version, might hit known bug 
http://bugs.mysql.com/bug.php?id=30472";);
+       if (mysqli_get_client_version($link) < 50123)
+               /* TODO - check wich version got the patch */
+               die(sprintf("skip libmysql %s should have bug 
http://bugs.mysql.com/bug.php?id=30472";, mysqli_get_client_version($link)));
+       mysqli_close($link);
+}
 ?>
 --FILE--
 <?php
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_insert_id.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/mysqli/tests/mysqli_insert_id.phpt
diff -u php-src/ext/mysqli/tests/mysqli_insert_id.phpt:1.2 
php-src/ext/mysqli/tests/mysqli_insert_id.phpt:1.3
--- php-src/ext/mysqli/tests/mysqli_insert_id.phpt:1.2  Thu Aug  9 10:01:20 2007
+++ php-src/ext/mysqli/tests/mysqli_insert_id.phpt      Fri Jan  4 18:17:13 2008
@@ -1,9 +1,9 @@
 --TEST--
 mysqli_insert_id()
 --SKIPIF--
-<?php 
+<?php
 require_once('skipif.inc');
-require_once('skipifemb.inc'); 
+require_once('skipifemb.inc');
 require_once('skipifconnectfailure.inc');
 ?>
 --FILE--
@@ -104,7 +104,7 @@
                        mysqli_free_result($res);
 
                        if ($next_id != $row['last_id']) {
-                               printf("[018] Something is wrong, check 
manually. Expecting %s got %s.\n",
+                               printf("[019] Something is wrong, check 
manually. Expecting %s got %s.\n",
                                        $next_id, $row['last_id']);
                                break;
                        }
@@ -112,6 +112,18 @@
                mysqli_query($link, "UNLOCK TABLE test");
        }
 
+       if (!$res = mysqli_query($link, "INSERT INTO test(id, label) VALUES 
(1000, 'a')")) {
+               printf("[020] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));
+       }
+       if (1000 !== ($tmp = mysqli_insert_id($link)))
+               printf("[021] Expecting int/1000, got %s/%s\n", gettype($tmp), 
$tmp);
+
+       if (!$res = mysqli_query($link, "INSERT INTO test(label) VALUES ('b'), 
('c')")) {
+               printf("[022] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));
+       }
+       if (1000 >= ($tmp = mysqli_insert_id($link)))
+               printf("[023] Expecting int/>1000, got %s/%s\n", gettype($tmp), 
$tmp);
+
        mysqli_close($link);
 
        var_dump(mysqli_insert_id($link));

http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_fetch_assoc_zerofill.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_fetch_assoc_zerofill.phpt
+++ php-src/ext/mysqli/tests/mysqli_fetch_assoc_zerofill.phpt
--TEST--
mysqli_fetch_assoc() - ZEROFILL
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
?>
--FILE--
<?php
        require_once('connect.inc');
        require_once('table.inc');

        function zerofill($offset, $link, $datatype, $insert = 1) {

                mysqli_query($link, 'ALTER TABLE test DROP zero');
                $sql = sprintf('ALTER TABLE test ADD zero %s UNSIGNED 
ZEROFILL', $datatype);
                if (!mysqli_query($link, $sql)) {
                        // no worries - server might not support it
                        return true;
                }

                if (!mysqli_query($link, sprintf('UPDATE test SET zero = %s', 
$insert))) {
                        printf("[%03d] UPDATE failed, [%d] %s\n",
                                $offset, mysqli_errno($link), 
mysqli_error($link));
                        return false;
                }

                if (!($res = mysqli_query($link, 'SELECT zero FROM test LIMIT 
1'))) {
                        printf("[%03d] SELECT failed, [%d] %s\n",
                                $offset, mysqli_errno($link), 
mysqli_error($link));
                        return false;
                }

                $row = mysqli_fetch_assoc($res);
                $meta = mysqli_fetch_fields($res);
                mysqli_free_result($res);
                $meta = $meta[0];
                $length = $meta->length;
                if ($length > strlen($insert)) {

                        $expected = str_repeat('0', $length - strlen($insert));
                        $expected .= $insert;
                        if ($expected !== $row['zero']) {
                                printf("[%03d] Expecting '%s' got '%s'\n", 
$offset, $expected, $row['zero']);
                                return false;
                        }

                } else if ($length <= 1) {
                        printf("[%03d] Length reported is too small to run 
test\n", $offset);
                        return false;
                }

                return true;
        }

        zerofill(2, $link, 'TINYINT');
        zerofill(3, $link, 'SMALLINT');
        zerofill(4, $link, 'MEDIUMINT');
        zerofill(5, $link, 'INT');
        zerofill(6, $link, 'INTEGER');
        zerofill(7, $link, 'BIGINT');
        zerofill(8, $link, 'FLOAT');
        zerofill(9, $link, 'DOUBLE');
        zerofill(10, $link, 'DOUBLE PRECISION');
        zerofill(11, $link, 'DECIMAL');
        zerofill(12, $link, 'DEC');

        mysqli_close($link);

        print "done!";
?>
--EXPECTF--
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_stmt_bind_result_zerofill.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_stmt_bind_result_zerofill.phpt
+++ php-src/ext/mysqli/tests/mysqli_stmt_bind_result_zerofill.phpt
--TEST--
mysqli_stmt_bind_result() - ZEROFILL
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
?>
--FILE--
<?php
        require_once('connect.inc');
        require_once('table.inc');

        function zerofill($offset, $link, $datatype, $insert = 1) {

                mysqli_query($link, 'ALTER TABLE test DROP zero');
                $sql = sprintf('ALTER TABLE test ADD zero %s UNSIGNED 
ZEROFILL', $datatype);
                if (!mysqli_query($link, $sql)) {
                        // no worries - server might not support it
                        return true;
                }

                if (!mysqli_query($link, sprintf('UPDATE test SET zero = %s', 
$insert))) {
                        printf("[%03d] UPDATE failed, [%d] %s\n",
                                $offset, mysqli_errno($link), 
mysqli_error($link));
                        return false;
                }

                if (!($stmt = mysqli_prepare($link, 'SELECT zero FROM test 
LIMIT 1'))) {
                        printf("[%03d] SELECT failed, [%d] %s\n",
                                $offset, mysqli_errno($link), 
mysqli_error($link));
                        return false;
                }

                $result = null;
                if (!mysqli_stmt_bind_result($stmt, $result)) {
                        printf("[%03d] Bind failed, [%d] %s\n",
                                mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));
                        return false;
                }

                if (!mysqli_stmt_execute($stmt) || !mysqli_stmt_fetch($stmt)) {
                        printf("[%03d] Execute or fetch failed, [%d] %s\n",
                                mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));
                        return false;
                }

                $res = mysqli_stmt_result_metadata($stmt);
                $meta = mysqli_fetch_fields($res);
                mysqli_stmt_free_result($stmt);

                $meta = $meta[0];
                $length = $meta->length;
                if ($length > strlen($insert)) {

                        $expected = str_repeat('0', $length - strlen($insert));
                        $expected .= $insert;
                        if ($expected !== $result) {
                                printf("[%03d] Expecting '%s' got '%s'\n", 
$offset, $expected, $result);
                                return false;
                        }

                } else if ($length <= 1) {
                        printf("[%03d] Length reported is too small to run 
test\n", $offset);
                        return false;
                }


                return true;
        }

        /*
        We map those to PHP numeric types -
                no padding/filling done. Neither with libmysql nor with mysqlnd.
        zerofill(2, $link, 'TINYINT');
        zerofill(3, $link, 'SMALLINT');
        zerofill(4, $link, 'MEDIUMINT');
        zerofill(5, $link, 'INT');
        zerofill(6, $link, 'INTEGER');
        zerofill(7, $link, 'BIGINT');
        zerofill(8, $link, 'FLOAT');
        zerofill(9, $link, 'DOUBLE');
        zerofill(10, $link, 'DOUBLE PRECISION');
        */
        zerofill(11, $link, 'DECIMAL');
        zerofill(12, $link, 'DEC');

        mysqli_close($link);

        print "done!";
?>
--EXPECTF--
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_stmt_bind_param_call_user_func.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_stmt_bind_param_call_user_func.phpt
+++ php-src/ext/mysqli/tests/mysqli_stmt_bind_param_call_user_func.phpt
--TEST--
mysqli_stmt_bind_param used with call_user_func_array() (see also bug #43568)
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');

// TODO remove once a decision has been made on call_user_func_array()
if (version_compare(PHP_VERSION, '5.3.0-dev') == -1)
        die("skip needs PHP 5.3.0-dev+, see 
http://bugs.php.net/bug.php?id=43568";);
?>
--FILE--
<?php
        require('connect.inc');
        require('table.inc');

        if (!$stmt = mysqli_stmt_init($link))
                printf("[001] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[002] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = 1;
        if (!mysqli_stmt_bind_param($stmt, 'i', $id) ||
                !mysqli_stmt_execute($stmt))
                printf("[003] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[004] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Regular, procedural, using variables\n";
        var_dump($id);
        var_dump($label);

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[005] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[006] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $types = 'i';
        $id = 1;
        $params = array(
                0 => &$stmt,
                1 => &$types,
                2 => &$id
        );
        if (!call_user_func_array('mysqli_stmt_bind_param', $params))
                printf("[007] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[008] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[009] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Call user func, procedural, using references for everything\n";
        var_dump($id);
        var_dump($label);

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[010] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[011] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $types = 'i';
        $id = 1;
        $params = array(
                0 => &$types,
                1 => &$id
        );
        if (!call_user_func_array(array($stmt, 'bind_param'), $params))
                printf("[012] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[013] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[014] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Call user func, object oriented, using references for 
everything\n";
        var_dump($id);
        var_dump($label);

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[015] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[016] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $types = 'i';
        $id = 1;
        $params = array(
                0 => $types,
                1 => &$id
        );
        if (!call_user_func_array(array($stmt, 'bind_param'), $params))
                printf("[017] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[018] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[019] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Call user func, object oriented, using variable for types. using 
references for bound parameter\n";
        var_dump($id);
        var_dump($label);

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[020] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[021] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = 1;
        $params = array(
                0 => 'i',
                1 => &$id
        );
        if (!call_user_func_array(array($stmt, 'bind_param'), $params))
                printf("[022] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[023] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[024] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Call user func, object oriented, using constant for types. using 
references for bound parameter\n";
        var_dump($id);
        var_dump($label);

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[025] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[026] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $types = 'i';
        $id = 1;
        $params = array(
                0 => &$stmt,
                1 => $types,
                2 => &$id
        );
        if (!call_user_func_array('mysqli_stmt_bind_param', $params))
                printf("[027] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[028] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[029] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Call user func, procedural, using references for everything but 
using variable for types\n";
        var_dump($id);
        var_dump($label);

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[025] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[026] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $types = 'i';
        $id = 1;
        $params = array(
                0 => $stmt,
                1 => $types,
                2 => &$id
        );
        if (!call_user_func_array('mysqli_stmt_bind_param', $params))
                printf("[027] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[028] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[029] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Call user func, procedural, using references for bound 
parameter, using variables for resource and types\n";
        var_dump($id);
        var_dump($label);

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[030] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[031] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $types = 'i';
        $id = 1;
        $params = array(
                0 => $stmt,
                1 => $types,
                2 => &$id
        );
        if (!call_user_func_array('mysqli_stmt_bind_param', $params))
                printf("[032] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[033] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[034] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Call user func, procedural, using references for bound 
parameter, using variables for resource and types\n";
        var_dump($id);
        var_dump($label);

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[035] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[036] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = 1;
        $params = array(
                0 => $stmt,
                1 => 'i',
                2 => &$id
        );
        if (!call_user_func_array('mysqli_stmt_bind_param', $params))
                printf("[037] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[038] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[039] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Call user func, procedural, using references for bound 
parameter, using variable for resource, using constant for types\n";
        var_dump($id);
        var_dump($label);

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[040] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[041] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = 1;
        if (!call_user_func_array('mysqli_stmt_bind_param', array($stmt, 'i', 
&$id)))
                printf("[042] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[043] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = $label = null;
        if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
                (true !== mysqli_stmt_fetch($stmt)))
                printf("[044] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        print "Call user func, procedural, using references for bound 
parameter, using variable for resource, using constant for types, array\n";
        var_dump($id);
        var_dump($label);

        //
        // Any of those shall fail - see also bugs.php.net/43568
        //
        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[045] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[046] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $id = 1;
        $params = array(
                0 => 'i',
                1 => $id
        );
        if (call_user_func_array(array($stmt, 'bind_param'), $params))
                printf("[047] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[048] [%d] (Message might vary with MySQL Server 
version, e.g. No data supplied for parameters in prepared statement)\n", 
mysqli_stmt_errno($stmt));

        mysqli_stmt_close($stmt);
        if (!$stmt = mysqli_stmt_init($link))
                printf("[049] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));

        if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id = 
?'))
                printf("[050] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        $types = 'i';
        $id = 1;
        $params = array(
                0 => $stmt,
                1 => 'i',
                2 => $id
        );
        if (call_user_func_array('mysqli_stmt_bind_param', $params))
                printf("[051] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

        if (!mysqli_stmt_execute($stmt))
                printf("[052] [%d] (Message might vary with MySQL Server 
version, e.g. No data supplied for parameters in prepared statement)\n", 
mysqli_stmt_errno($stmt));

        print "done!";
?>
--EXPECTF--
Regular, procedural, using variables
int(1)
string(1) "a"
Call user func, procedural, using references for everything
int(1)
string(1) "a"
Call user func, object oriented, using references for everything
int(1)
string(1) "a"
Call user func, object oriented, using variable for types. using references for 
bound parameter
int(1)
string(1) "a"
Call user func, object oriented, using constant for types. using references for 
bound parameter
int(1)
string(1) "a"
Call user func, procedural, using references for everything but using variable 
for types
int(1)
string(1) "a"
Call user func, procedural, using references for bound parameter, using 
variables for resource and types
int(1)
string(1) "a"
Call user func, procedural, using references for bound parameter, using 
variables for resource and types
int(1)
string(1) "a"
Call user func, procedural, using references for bound parameter, using 
variable for resource, using constant for types
int(1)
string(1) "a"
Call user func, procedural, using references for bound parameter, using 
variable for resource, using constant for types, array
int(1)
string(1) "a"
[048] [2031] (Message might vary with MySQL Server version, e.g. No data 
supplied for parameters in prepared statement)
[052] [2031] (Message might vary with MySQL Server version, e.g. No data 
supplied for parameters in prepared statement)
done!
--UEXPECTF--
Regular, procedural, using variables
int(1)
unicode(1) "a"
Call user func, procedural, using references for everything
int(1)
unicode(1) "a"
Call user func, object oriented, using references for everything
int(1)
unicode(1) "a"
Call user func, object oriented, using variable for types. using references for 
bound parameter
int(1)
unicode(1) "a"
Call user func, object oriented, using constant for types. using references for 
bound parameter
int(1)
unicode(1) "a"
Call user func, procedural, using references for everything but using variable 
for types
int(1)
unicode(1) "a"
Call user func, procedural, using references for bound parameter, using 
variables for resource and types
int(1)
unicode(1) "a"
Call user func, procedural, using references for bound parameter, using 
variables for resource and types
int(1)
unicode(1) "a"
Call user func, procedural, using references for bound parameter, using 
variable for resource, using constant for types
int(1)
unicode(1) "a"
Call user func, procedural, using references for bound parameter, using 
variable for resource, using constant for types, array
int(1)
unicode(1) "a"
[048] [2031] (Message might vary with MySQL Server version, e.g. No data 
supplied for parameters in prepared statement)
[052] [2031] (Message might vary with MySQL Server version, e.g. No data 
supplied for parameters in prepared statement)
done!
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to