Annotation of embedaddon/php/ext/mysqli/tests/mysqli_stmt_bind_param_check_param_no_change.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: mysqli_stmt_bind_param() - checking whether the parameters are modified (bug#44390)
        !             3: --SKIPIF--
        !             4: <?php
        !             5: require_once('skipif.inc');
        !             6: require_once('skipifemb.inc');
        !             7: require_once('skipifconnectfailure.inc');
        !             8: ?>
        !             9: --FILE--
        !            10: <?php
        !            11:        require('table.inc');
        !            12:        $link->set_charset('latin1');
        !            13: 
        !            14:        class foo {
        !            15:          // @var $bar string
        !            16:          public $bar;
        !            17:        }
        !            18: 
        !            19:        $foo = new foo;
        !            20:        $foo->bar = "фубар";
        !            21: 
        !            22:        echo "Test 1:\n";
        !            23:        $stmt = $link->prepare("SELECT ? FOO");
        !            24:        var_dump($foo); // here you can see the bar member var beeing a string
        !            25:        $stmt->bind_param("s", $foo->bar);
        !            26:        var_dump($foo); // this will show $foo->bar beeing a reference string
        !            27:        $stmt->bind_result($one);
        !            28:        $stmt->execute();
        !            29:        $stmt->fetch();
        !            30:        $stmt->free_result();
        !            31:        echo("$one\n\n");
        !            32: 
        !            33:        // it is getting worse. Binding the same var twice with different
        !            34:        // types you can get unexpected results (e.g. binary trash for the
        !            35:        // string and misc data for the integer. See next 2 tests.
        !            36: 
        !            37:        echo "Test 2:\n";
        !            38:        $stmt = $link->prepare("SELECT ? FOO, ? BAR");
        !            39:        var_dump($foo);
        !            40:        $stmt->bind_param("si", $foo->bar, $foo->bar);
        !            41:        echo "---\n";
        !            42:        var_dump($foo);
        !            43:        echo "---\n";
        !            44:        $stmt->execute();
        !            45:        var_dump($foo);
        !            46:        echo "---\n";
        !            47:        $stmt->bind_result($one, $two);
        !            48:        $stmt->fetch();
        !            49:        $stmt->free_result();
        !            50:        echo("$one - $two\n\n");
        !            51: 
        !            52: 
        !            53:        echo "Test 3:\n";
        !            54:        $stmt = $link->prepare("SELECT ? FOO, ? BAR");
        !            55:        var_dump($foo);
        !            56:        $stmt->bind_param("is", $foo->bar, $foo->bar);
        !            57:        var_dump($foo);
        !            58:        $stmt->bind_result($one, $two);
        !            59:        $stmt->execute();
        !            60:        $stmt->fetch();
        !            61:        $stmt->free_result();
        !            62:        echo("$one - $two\n\n");
        !            63:        echo "done!";
        !            64: ?>
        !            65: --CLEAN--
        !            66: <?php
        !            67:        require_once("clean_table.inc");
        !            68: ?>
        !            69: --EXPECTF--
        !            70: Test 1:
        !            71: object(foo)#%d (1) {
        !            72:   [%u|b%"bar"]=>
        !            73:   %unicode|string%(%d) "фубар"
        !            74: }
        !            75: object(foo)#%d (1) {
        !            76:   [%u|b%"bar"]=>
        !            77:   &%unicode|string%(%d) "фубар"
        !            78: }
        !            79: фубар
        !            80: 
        !            81: Test 2:
        !            82: object(foo)#%d (1) {
        !            83:   [%u|b%"bar"]=>
        !            84:   %unicode|string%(%d) "фубар"
        !            85: }
        !            86: ---
        !            87: object(foo)#%d (1) {
        !            88:   [%u|b%"bar"]=>
        !            89:   &%unicode|string%(%d) "фубар"
        !            90: }
        !            91: ---
        !            92: object(foo)#%d (1) {
        !            93:   [%u|b%"bar"]=>
        !            94:   &%unicode|string%(%d) "фубар"
        !            95: }
        !            96: ---
        !            97: фубар - 0
        !            98: 
        !            99: Test 3:
        !           100: object(foo)#%d (1) {
        !           101:   [%u|b%"bar"]=>
        !           102:   %unicode|string%(%d) "фубар"
        !           103: }
        !           104: object(foo)#%d (1) {
        !           105:   [%u|b%"bar"]=>
        !           106:   &%unicode|string%(%d) "фубар"
        !           107: }
        !           108: 0 - фубар
        !           109: 
        !           110: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>