PHP 5.3.1 传递引用问题
好吧,这是一个奇怪的问题,所以请耐心听我解释.
Ok, this is a weird problem, so please bear with me as I explain.
我们将开发服务器从 PHP 5.2.5 升级到 5.3.1.
We upgraded our dev servers from PHP 5.2.5 to 5.3.1.
在切换后加载我们的代码,我们开始收到如下错误:
Loading up our code after the switch, we start getting errors like:
警告:mysqli_stmt::bind_param() 的参数 2 应为参考,值在/home/spot/trunk/system/core/Database.class.php 第 105 行中给出
提到的(105)行如下:
the line mentioned (105) is as follows:
call_user_func_array(Array($stmt, 'bind_param'), $passArray);
我们将该行更改为以下内容:
we changed the line to the following:
call_user_func_array(Array($stmt, 'bind_param'), &$passArray);
此时(因为allow_call_time_pass_reference
)关闭,php抛出这个:
at this point (because allow_call_time_pass_reference
) is turned off, php throws this:
已弃用:/home/spot/trunk/system/core/Database.class.php 中的第 105 行已弃用调用时传递引用
在尝试解决此问题一段时间后,我崩溃了并将 allow_call_time_pass_reference
设置为开启.
After trying to fix this for some time, I broke down and set allow_call_time_pass_reference
to on.
这摆脱了 Deprecated
警告,但现在 Warning: Parameter 2 to mysqli_stmt::bind_param() 预计将成为参考
警告每次都抛出,有或没有引用.
That got rid of the Deprecated
warning, but now the Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference
warning is throwing every time, with or without the referencing.
我对如何解决这个问题毫无头绪.如果目标方法是我自己的,我只会在 func 声明中引用传入的变量,但它是一个(相对)本机方法 (mysqli).
I have zero clue how to fix this. If the target method was my own, I would just reference the incoming vars in the func declaration, but it's a (relatively) native method (mysqli).
有人遇到过这种情况吗?我该如何解决?
Has anyone experienced this? How can I get around it?
谢谢.
推荐答案
您正在传递一个元素数组 ($passArray).传递的数组内的第二个项目需要是一个引用,因为那确实是您传递给函数的项目列表.
You are passing an array of elements ($passArray). The second item inside the passed array needs to be a reference, since that is really the list of items you are passing to the function.
相关文章