我正在尝试编写一个能够获得用户数猜测平均值的函数。该表具有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查询,我会得到结果。我错过了这个功能吗?
答案 0 :(得分:1)
可能还有其他问题,但$user
(扩展名为$user->userID
)在您的函数范围内未定义。因此,您在那里连接null
值,因此您生成的SQL是
WHERE p.userID = GROUP BY p.userID
导致您在评论中提到的错误。这是一个语法错误,因为你有一个关键字,它期望一个值。
我看到你有$userID
作为函数的参数,但没有使用它。它应该只是$user
吗?
答案 1 :(得分:1)
您需要配置PHP以发出错误。
您的查询会创建一个名为' avarage'的虚拟列,但您的php代码会使用拼写' average'。打开错误会使这非常明显。