添加值等于ID的所有行

时间:2013-10-16 08:32:27

标签: php mysql

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

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

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

1 个答案:

答案 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();
}