我一直在四处寻找一些这方面的教程,我似乎运气不好。基本上,我有一个数据库,其中包含获胜者的用户ID(对应于获胜者用户ID)和失败者ID。我正在尝试创建一个成员配置文件,它会计算成员赢得的所有行。以下是我的想法:
$web = mysqli_query("select SUM(matches) WHERE WinnerUID='".$req_user_info['id']."'");
$web_sum=mysqli_fetch_assoc($web);
echo $web_sum;
不幸的是,它没有显示任何数字。有人可以帮忙吗?
答案 0 :(得分:3)
我认为您正在寻找COUNT()
而不是SUM()
。而且你没有包含表名。还要记住mysqli_fetch_assoc()
将行作为数组返回,它不会返回第一列的值。此外,mysqli_query()
需要连接作为第一个参数。
$web = mysqli_query($conn, "select COUNT(*) as total FROM matches WHERE WinnerUID='".(int)$req_user_info['id']."'");
$row = mysqli_fetch_assoc($web);
echo $row['total'];
不要将变量连接到SQL中。使用带有绑定参数的Prepared Statement。我在上面的代码中将您的ID转换为(int)
,这是一个快速修复,但您应该切换到预备声明。
Prepared Statement示例(面向对象的界面而不是程序):
if ($stmt = $conn->prepare("select COUNT(*) from matches WHERE WinnerUID = ?")) {
$stmt->bind_param("i", $req_user_info['id']);
$stmt->execute();
$stmt->bind_result($web_sum);
$stmt->fetch();
echo $web_sum;
$stmt->close();
}