首页 > 解决方案 > 查询后从 PHP/MySQL 中的数据库行返回值 0

问题描述

我正在尝试创建一个页面,我可以在其中获取数据库的记录值。我的查询是这样的:

因此,如果它们存在,我需要从 tableexample 中获取状态值 1 的数量(作为计数)并计算它们,如果它们不存在,我需要从中获取值为 0。为了获得值,我使用了这段代码,它工作得很好,但是如果没有找到结果,我似乎无法在我的 PHP 代码中返回 0 值。我有点失落。

$user = $_SESSION["user"];
$systems = mysqli_connect("localhost", "root", "", "testdatabase");
$query = "SELECT SUM(count) AS value_sum FROM tableexample WHERE user = '$user' AND status = '1'";
$request = mysqli_query($systems, $query);
if (mysqli_num_rows($request) > 0) {
    while ($row = mysqli_fetch_array($request)) {
        echo '' . $row["value_sum"] . '';
    }
} else {
    echo '0';
}

因此,这段代码可以毫无问题地获取值,但是当我放置“else”时,它应该给我值 0,但没有给我任何东西。

关于如何在不更改代码的情况下解决这个问题的任何想法?

标签: phpmysqlpdo

解决方案


使用 PDO 会是这样的吗:

$dsn = "mysql:host=localhost;dbname=myDatabase;charset=utf8mb4";

$pdo = new PDO($dsn, "username", "password", [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);

$stmt = $pdo->prepare('
    SELECT SUM(count)
    FROM `table_example` 
    WHERE `user` = :user 
    AND `status` = "1"'
);

$stmt->bindParam(':user', $_SESSION["user"], PDO::PARAM_STR);
$stmt->execute();
$sum = $stmt->fetchColumn();
echo $sum;

您无需编写任何循环或先前的检查即可获得 SUM 值。


推荐阅读