严格的标准错误 - 通过引用传递

时间:2014-11-13 06:47:34

标签: php strict

我一直收到这个错误:

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并输入一个代码片段来忽略这些错误,无济于事,我可能已经搞砸了,因为我对它很陌生......

如果有人能告诉我如何严格证明,那就太棒了! 提前致谢

1 个答案:

答案 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