【发布时间】:2015-08-13 17:03:47
【问题描述】:
有一个循环查询(while 循环)从表中选择 2 个列值,然后代码对 2 个值求和,我需要用求和值更新另一列> 代码如下:
$stmt = $conn->prepare('select value1, value2, valuse3 from eg.table limit ? ');
$stmt->bind_param('i',$limit);
$stmt->execute();
$stmt->bind_result($value1, $value2,$value3);
$arr = array();
while($stmt->fetch()) {
$row = array();
array_push($arr, $row);
$newvalue=($value1+$value2);
$stmt1 = $conn->prepare("UPDATE eg.table SET eg.column=? WHERE eg2.column=?");
$stmt1->bind_param('ii',$newvalue , $value3);
$stmt1->execute();
}
当我使用此查询时,我收到此错误:致命错误:在第 13 行的 C:\xampp\htdocs\so\new\socialrank.php 中的布尔值上调用成员函数 bind_param()
如果您有其他解决方案来使用 Mysqli 完成这项工作,那也没关系。 任何帮助将不胜感激, 提前致谢。
【问题讨论】:
-
在循环中执行 SQL 查询通常是不好的做法。最好在循环中构建一个批量查询,然后执行一次。
-
显然您的语句无法准备好,操作返回 false(因此为布尔值)。除此之外,我真的不明白你想要达到什么目的。我认为 valuse 是价值的错字?而 WHERE 子句中的表 eg2 又是从哪里来的呢?
-
@StuartWagner 我同意你的观点,但我不知道该怎么做(我的意思是批量查询),我考虑过使用 JOIN 但我什至没有想象我该怎么写它在进行计算过程后进行选择和更新。
-
@TomasoAlbinoni 你知道,当我单独执行每个查询时,它们都可以工作!我现在的想法是 0,没有解决方案 :) 所以如果您有建议的解决方案,请发布。
-
正如我所说,我不明白您要做什么。所以在你解释之前,我不会有解决方案。