【问题标题】:PHP output calculated SQL value [duplicate]PHP输出计算出的SQL值[重复]
【发布时间】:2016-01-09 01:11:00
【问题描述】:

我正在尝试将所有值添加到表中的单个列中,然后回显该值

$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
            }
$sql = "SELECT sum(paid) as total_paid from users";
$result = $conn->query($sql);
echo $result;

但我最终得到了这个错误:

可捕获的致命错误:无法将类 mysqli_result 的对象转换为字符串

为什么以及如何解决?

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    这对于“评论”来说太长了。

    您需要遍历结果并使用 while 循环,而不是回显查询,这就是您收到当前错误的原因。

    您还需要确保paid 列的类型可用于执行数学问题,例如int例如)。如果是varchar,则需要将其转换为整数。

    参考文献:

    这里是一个程序风格的方法:

    $sql = "SELECT sum(paid) as total_paid from users";
    $result = $conn->query($sql);
    
    while ($row = mysqli_fetch_array($result)) {
        echo "Sum: " . $row['total_paid'];
    }
    

    或作为面向对象的方法:

    while($row = $result->fetch_array()) {
            echo $sum = $row['total_paid'];
            }
    

    旁注:

    要根据用户/ID 计算行,请在查询中添加 WHERE 子句。

    即:WHERE id='x'

    【讨论】:

    • “例如int”让我倍感意外。这很有意义,但听起来很有趣。也许这只是我:)
    • @Martin int 只是少数可用于在 MySQL 中执行数学运算的类型之一。还有其他几个。虽然我可以为可以执行数学的不同类型添加指向 MySQL 网站的链接。
    • 我指的是“例如int”,我只是这么读的,它确实有道理,但它让我仔细阅读,然后嘲笑int作为一个值的巧合type in MySQL 也可以在这句话中暗示 instance.
    • @Martin 啊,我明白你现在的意思了。 “例如”的意思是“例如”。
    • 哈,是的,我知道这意味着什么,只是句子中单词的顺序和形状让我觉得很有趣。 (现在我觉得这一切都需要解释太愚蠢了。)哈哈,无论如何,你的回答很好,我只是有一个有趣的解释。 * 回到石头下找钱,偶尔咕哝*
    【解决方案2】:

    这是因为$result 返回的是一个对象,而不是一个字符串。您必须遍历它并回显结果。而且由于它只有一行(因为 SUM 没有 group by 总是只返回一个值,因此只有一行),你可以这样做:

    if ($row = $result->fetch_assoc()) {
        echo $row['total_paid'];
    } 
    

    或者,直接使用fetch_object()

    echo $result->fetch_object()->total_paid;
    

    【讨论】:

    • 它只有一行,它的多行。这是一列
    • @Rhillz SUM without group by 总是只返回一行
    • @Rhillz 是的,它只会返回一个值,因此它只会是一行。
    • @Rhillz - 你试过代码了吗?好不好用??
    • 我仍然收到这个未定义的变量错误:$sql = "SELECT sum(paid) as total_paid from users"; $result = $conn->查询($sql); echo $result->fetch_object()->total_paid
    猜你喜欢
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2021-08-02
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多