我一直在寻找一些这方面的教程,但我似乎不走运。基本上,我有一个包含赢家用户ID(对应于赢家用户ID)和输家ID的数据库。我正在尝试创建一个会员个人资料,它会计算会员赢得的所有行。这是我想到的:
$web = mysqli_query("select SUM(matches) WHERE WinnerUID='".$req_user_info['id']."'");
$web_sum=mysqli_fetch_assoc($web);
echo $web_sum;
不幸的是,它不显示任何数字。谁能帮忙?
我认为您正在寻找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 中。使用带有绑定参数的预准备语句。我已经在上面的代码中将您的 ID 转换为(int)
,这是一个快速修复,但您应该切换到预准备语句。
预准备语句示例(面向对象的接口而不是过程式接口):
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();
}