我一直收到这个错误:
Strict Standards: "Only variables should be passed by reference in
/home/mydirectory/public_html/myfolder/modules/checkout/controllers/myfile.php
on line 65"
这是第65行的代码:
$stmt->bind_param(
"iissds",
$this->auth->getInformation("id"),
$_POST["method"],
$transaction_id,
$Method->getTransactionID(),
$total_price,
serialize($_POST));
我确实尝试编辑我的php.ini并输入一个代码片段来忽略这些错误,无济于事,我可能已经搞砸了,因为我对它很陌生......
如果有人能告诉我如何严格证明,那就太棒了! 提前致谢
答案 0 :(得分:1)
我猜你正在调用的bind_param
函数是mysqli's bind_param。
如果我们看一下这个函数的定义,我们将看到变量通过引用传递:
bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
(&
表示参考。)
现在让我们来看看你得到的错误:
Only variables should be passed by reference
问题是,当只有变量应该通过引用传递时,您将函数调用的结果直接传递给bind_param
。
要解决这个问题,您需要做的就是将这些值分配给变量并将其传递给函数,例如:
$id = $this->auth->getInformation("id");
...
$stmt->bind_param('iissds', $id, ...
有关参考资料的更多信息,请参阅php.net文章“参考资料”:
http://php.net/manual/en/language.references.whatdo.php
Hididng错误
在你的问题中,你提到隐藏这些消息。修复代码问题总是比抑制警告更好。
要调整显示的错误,请查看PHP的error_reporting
函数。
如果您想要显示除严格以外的所有内容:
error_reporting(E_ALL ^ E_STRICT);
这也可以在php.ini配置文件中设置:
error_reporting = E_ALL ^ E_STRICT