ID:               49946
 Comment by:       chris at network-13 dot com
 Reported By:      chris at network-13 dot com
 Status:           Open
 Bug Type:         MySQLi related
 Operating System: Windows 7
 PHP Version:      5.3.0
 New Comment:

Does this mean 5.3.0 is correct in giving the error and 5.2.10 was
wrong in letting it work?


Previous Comments:
------------------------------------------------------------------------

[2009-10-21 15:27:40] u...@php.net

Sounds like Bogus

http://de3.php.net/manual/en/function.call-user-func-array.php
-> Note: Referenced variables in param_arr  are passed to the function
by a reference, others are passed by a value. In other words, it does
not depend on the function signature whether the parameter is passed by
a value or by a reference. 

call_user_func_array does call by value and mysqli_stmt_bind_param() is
documented to expect variables passed by reference.

http://de3.php.net/manual/en/mysqli-stmt.bind-param.php
bool mysqli_stmt::bind_param  ( string $types  , mixed &$var1  [, mixed
&$...  ] )



------------------------------------------------------------------------

[2009-10-21 15:20:42] chris at network-13 dot com

Description:
------------
I tested this on both linux/windows with PHP 5.2.10 and it gave no
problems. After updating the windows machine to PHP 5.3.0 it now gives
the error.

Warning: Parameter 3 to mysqli_stmt_bind_param() expected to be a
reference, value given

Reproduce code:
---------------
<?php
class db {
    public $result;    
    function getresult(){
        $connection = mysqli_connect('localhost', 'root', 'password',
'testdb');        
        $args = func_get_args();
        $query = array_shift($args);
         
        if(!$connection){ mysqli_connect_error(); exit(); }
        $sql = mysqli_prepare($connection, $query);
    
        $types = str_repeat('s', count($args));
        array_unshift($args, $types);
        array_unshift($args, $sql);
     
        call_user_func_array('mysqli_stmt_bind_param', $args); 
        mysqli_stmt_execute($sql);
        mysqli_stmt_bind_result($sql, $result);    
        mysqli_stmt_fetch($sql);
    
        mysqli_close($connection);
        $this->result = $result;        
    }
}

$uid = NEW db();
$uid->getresult("SELECT uid FROM testtable WHERE user = ?","Chris");
echo $uid->result;
?>

Expected result:
----------------
It should echo the uid of the user.

Actual result:
--------------
Warning: Parameter 3 to mysqli_stmt_bind_param() expected to be a
reference, value given in D:\www\mysqli2.php on line 16


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=49946&edit=1

Reply via email to