没有错误,结果总是为零

时间:2017-12-08 20:35:04

标签: php sql

我正在尝试编写一个能够获得用户数猜测平均值的函数。该表具有userID和tieBreakerPoints。

function getUserTBA($userID) {
    global $mysqli;

    // loop through user totals & calculate average for each user
    $sql = "SELECT u.userID, p.userID, AVG(p.tieBreakerPoints) AS 'avarage' ";
    $sql .= "FROM " . DB_PREFIX . "picksummary p";
    $sql .= "inner join " . DB_PREFIX . "users u on p.userID = u.userID ";    
    $sql .= "WHERE p.userID = " . $user->userID . " ";
    $sql .= "GROUP BY p.userID";
    $query = $mysqli->query($sql);

    if ($query->num_rows > 0) {
        $row = $query->fetch_array();
        return (int)$row['average'];
    }

    return 0;
}

当我调用该函数时,我似乎只得到零值,但如果我直接在SQL中运行SQL查询,我会得到结果。我错过了这个功能吗?

2 个答案:

答案 0 :(得分:1)

可能还有其他问题,但$user(扩展名为$user->userID)在您的函数范围内未定义。因此,您在那里连接null值,因此您生成的SQL是

WHERE p.userID =  GROUP BY p.userID

导致您在评论中提到的错误。这是一个语法错误,因为你有一个关键字,它期望一个值。

我看到你有$userID作为函数的参数,但没有使用它。它应该只是$user吗?

答案 1 :(得分:1)

您需要配置PHP以发出错误。

您的查询会创建一个名为' avarage'的虚拟列,但您的php代码会使用拼写' average'。打开错误会使这非常明显。