【问题标题】:"Cannot pass parameter 2 by reference" Error in PHP [duplicate]“无法通过引用传递参数2”PHP中的错误[重复]
【发布时间】:2018-02-21 14:03:41
【问题描述】:

当我运行此代码以更新我的 likeOne 列并使其为空 ("")....

    $sql11 = $conn->prepare("UPDATE UserData SET likedOne=? WHERE username=?");
    $sql11->bind_param('ss',"",$Username);
    $Username = "netsgets";
    $sql11->execute();

我收到此错误....

1 Fatal error: Cannot pass parameter 2 by reference in /xxx/xxx/xxx/test.php on line 36. 

这条线是....

$sql11->bind_param('ss',"",$Username);

怎么了?

【问题讨论】:

  • 错误信息明确指出第二个参数("")不能通过引用传递。只有变量可以通过引用传递,因此您应该创建一个变量,并将其作为第二个参数传递。

标签: php mysql


【解决方案1】:

对不起我之前的回答

你可以通过改变来解决它

 $sql11->bind_param('ss',"",$Username);

到

$variable ="";
$sql11->bind_param('ss',$variable,$Username);

因为 bind_param 更适用于变量

【讨论】:

  • 那行不通
  • 我刚刚编辑了我的答案
  • 不。还是不行
  • OP 仅绑定到两个“字符串”,因此添加另一个 s 不会改变任何内容
【解决方案2】:

你需要使用一个变量,bind_param 只取变量而不是直接取值。

   $likedone ="";
   $sql11->bind_param('ss',$likedone,$Username);

【讨论】:

    【解决方案3】:

    bind_param(...) 期望它的 param 参数作为引用。 See。这意味着它可能会改变它们(例如,当它们引用查询结果时)。每当你传递一些东西作为参考时,你必须给它一个名字(草率的经验法则,但更容易解释)。在某种程度上,这只是告诉 PHP 您关心潜在的修改(再次简化)。你可以使用$emptyString = ""; $sql11->bind_param('ss',$emptyString ,$Username);

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 2013-01-12
      • 1970-01-01
      • 2017-07-24
      • 2013-03-07
      • 1970-01-01
      • 2014-03-17
      相关资源
      最近更新 更多