3

我一直在四处寻找这方面的几个教程,但我似乎不走运。基本上,我有一个包含获胜者用户 ID(对应于获胜者用户 ID)和失败者 ID 的数据库。我正在尝试创建一个成员配置文件,其中计算成员赢得的所有行。这是我想出的:

$web = mysqli_query("select SUM(matches) WHERE WinnerUID='".$req_user_info['id']."'"); 
$web_sum=mysqli_fetch_assoc($web); 
echo $web_sum;

不幸的是,它没有显示任何数字。任何人都可以帮忙吗?

4

1 回答 1

3

我想你正在寻找COUNT()not 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 。(int)在上面的代码中将您的 ID 转换为 an,这是一个快速修复,但您应该切换到 Prepared Statement。

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();
}
于 2013-10-16T08:41:17.497 回答