【问题标题】:Mysqli prepared statements SUM column valueMysqli 准备好的语句 SUM 列值
【发布时间】:2014-08-26 14:50:43
【问题描述】:

我正在尝试使用 mysqli 准备好的语句和下面的代码对列中的值求和,但不工作。有谁可以帮我指出我做错了什么?谢谢!

$stmt2 = $mysqli->prepare("SELECT SUM(col) as total FROM tb_a WHERE user=?");

$stmt2->bind_param("s", $user);
$stmt2->execute();
$op_row = $stmt2->fetch_assoc();

echo $op_row['total'];

【问题讨论】:

  • 需要知道“不工作”是什么意思。它是否返回错误?一排?有什么事吗?
  • 对不起!!错误是“调用未定义的方法 mysqli_stmt::fetch_assoc()”
  • 所以它与SUM无关,与PHP有关。
  • 感谢@Andrew 的回答,我还没有修复它。但我会试着找出发生了什么
  • @VictorDallecio 请在下面查看我的答案。

标签: php mysqli sum prepared-statement


【解决方案1】:

试一试:

$user = "Larry"; // example

$stmt = $mysqli->prepare("SELECT SUM(col) FROM tb_a WHERE user=?");
    $stmt->bind_param("s", $user);
    $stmt->execute();
    $stmt->bind_result($total);

    $stmt->fetch();

    echo $total;

$user = "Robert"; // example

$stmt = $mysqli->prepare("SELECT SUM(col) FROM tb_a WHERE user=?");
    $stmt->bind_param("s", $user);
    $stmt->execute();
    $stmt->bind_result($total);

    while ($stmt->fetch()) {

    echo $total;

}

【讨论】:

  • @VictorDallecio 不客气,维克多。你可以使用任何一个都可以。 while ($stmt->fetch()) 的那个你其实并不需要,我想我也会把它包括在内。
  • @VictorDallecio 不客气,维克多。如果您认为问题已经解决,您可以通过勾选复选标记直到它变为绿色,将其标记为已回答,干杯!要了解如何操作,请咨询 meta.stackexchange.com/a/5235
【解决方案2】:

试试这个:

$stmt2 = $mysqli->prepare("SELECT SUM(col) as total FROM tb_a WHERE user=?");
$stmt2->bind_param("s", $user);
$stmt2->execute();
$res = $stmt2->get_result();
$row = $res->fetch_assoc();

prepared statement 对象没有 fetch_assoc() 方法,因此您应该首先使用 get_result() 并且其结果具有 fetch_assoc()

【讨论】:

  • 你应该实现 OP 的查询而不是 ("SELECT SUM(col) as total FROM tb_a WHERE user=?")
  • 对不起,我没明白! @Fred-ii-
【解决方案3】:

试试这个

$conn = new mysqli;
$sum = "SELECT SUM(col) as total FROM tb_a WHERE user=?";
$stmt = $conn->prepare($sum);
$stmt->bind_param("s", $user);
$sum= $stmt->execute();

【讨论】:

    猜你喜欢
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 2011-03-07
    • 2014-06-11
    • 2011-06-20
    • 1970-01-01
    相关资源
    最近更新 更多