【问题标题】:Only variables can be passed by reference - php只有变量可以通过引用传递 - php
【发布时间】:2011-10-27 02:26:00
【问题描述】:

我正在尝试此代码,但出现此错误:

Only variables can be passed by reference in xxx

脚本

class page {
  function insert($db, $of, $form, &$arr) {

      $i = 0;

      foreach(array_combine($form['value0'], $arr) as $val=>$v){

          $sql->prepare("mysqli query here");
          $sql->bind_param('ssss', $val, $of, $v[$i][0], $v[$i][1]);//error here
          $sql->execute();
          $i++;

      }
      return true;
  }
}

是什么原因,如何解决?谢谢

【问题讨论】:

  • 我什至看不到 sql 的初始化位置
  • 在你的错误行中,$of 应该是 $oferta 吗?
  • 你为什么认为这样可以解决问题?
  • $of,但是对于这种情况,是无关紧要的,问题在于参考(&$arr)。

标签: php mysql reference


【解决方案1】:

我假设您使用的是mysqli::bind_param。除第一个参数外,所有参数均通过引用传递。这意味着它们必须是变量,而不是字符串、数组元素等。我实际上不确定为什么它需要通过引用来执行此操作,但没关系。你可以很容易地修复它:

$v0 = $v[$i][0];
$v1 = $v[$i][1];
$sql->bind_param('ssss', $val, $of, $v0, $v1);

【讨论】:

  • “愚蠢的设计决策”,但它就是这样。:我想“所以可以在绑定之后但在执行之前分配值?”这将允许重复使用相同的$sql,只需更改引用变量的值......再次,而不是我的设计方式。
猜你喜欢
  • 2013-11-13
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2011-05-27
  • 2013-06-21
  • 2017-04-03
  • 1970-01-01
相关资源
最近更新 更多