3 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊
使用 PDO 會(huì)是這樣的:
$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;
您無(wú)需編寫任何循環(huán)或先前的檢查即可獲得 SUM 值。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
您正在執(zhí)行一個(gè)SUM始終有結(jié)果行的查詢。
SELECT SUM(count) AS value_sum FROM tableexample WHERE user = '$user' AND status = '1'
您可能想檢查SUM(count) = 0您可以在 while 循環(huán)中執(zhí)行的位置
while ($row = mysqli_fetch_array($request)) {
if (!empty($row[0])) {
echo $row[0]; // sum not 0
} else {
echo '0';
}
}

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
您正在使用mysqli_fetch_array它返回具有數(shù)字和關(guān)聯(lián)索引的數(shù)組,而不僅僅是關(guān)聯(lián)數(shù)組。您應(yīng)該使用mysqli_fetch_assocor和文檔中提到的mysqli_fetch_array第二個(gè)參數(shù)。resulttype
resulttype此可選參數(shù)是一個(gè)常量,指示應(yīng)從當(dāng)前行數(shù)據(jù)生成哪種類型的數(shù)組。此參數(shù)的可能值是常量 MYSQLI_ASSOC、MYSQLI_NUM 或 MYSQLI_BOTH。
通過(guò)使用 MYSQLI_ASSOC 常量,該函數(shù)的行為與 mysqli_fetch_assoc() 相同,而 MYSQLI_NUM 的行為與 mysqli_fetch_row() 函數(shù)相同。最后一個(gè)選項(xiàng) MYSQLI_BOTH 將創(chuàng)建一個(gè)具有兩者屬性的數(shù)組。
https://www.php.net/manual/en/mysqli-result.fetch-array.php
https://www.php.net/manual/en/mysqli-result.fetch-assoc.php
根據(jù)OP的要求。 這是您的代碼,但有一些更改。
<?php
$user = $_SESSION["user"];
$systems = mysqli_connect("localhost", "root", "", "testdatabase");
$query = mysqli_real_escape_string($systems, "SELECT SUM(count) AS value_sum FROM tableexample WHERE user = '$user' AND status = '1'");
$request = mysqli_query($systems, $query) or die(mysqli_error($systems)); // Added die for dev env. You can choose how you want to deal with db query error.
if (mysqli_num_rows($request) > 0) {
// Just replaced mysqli_fetch_array with mysqli_fetch_assoc
while ($row = mysqli_fetch_assoc($request)) {
echo '' . $row["value_sum"] . '';
}
} else {
echo '0';
}
另外,正如您所了解的那樣0
,您似乎if (mysqli_num_rows($request) > 0)
沒(méi)有返回true
??赡苁怯捎跀?shù)據(jù)庫(kù)查詢中的某些錯(cuò)誤,您可能需要再次檢查。
編輯 04-04-2020:
更新了關(guān)于
indexes
返回array
的信息mysqli_fetch_array
。添加
mysqli_real_escape_string
為$query
.
- 3 回答
- 0 關(guān)注
- 234 瀏覽
添加回答
舉報(bào)