2017-12-08 7 views
0

私は、ユーザー数の推測値を推測する関数を作成しようとしています。テーブルには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クエリを実行すると結果が得られます。私はこの機能で何かを逃していますか?

+1

ここで、 'DB_PREFIX'は定義されていますか? '$ user'はどこに定義されていますか?これは独立した関数かクラスメソッドか? –

+0

あなたはどんな警告も受けていますか? – Naeem

+1

'return 0;'の前に 'echo $ mysqli-> error;'を置き、それが何であるか教えてください – musashii

答えて

1

その他の問題がありますが、$user(拡張子は$user->userID)は機能スコープでは定義されていません。その結果、あなたはそこにnull値を連結しているので、あなたが作成しているSQLを使用すると、コメントに記載されたエラーの原因となっている

WHERE p.userID = GROUP BY p.userID 

です。値を期待しているキーワードがあるため、構文エラーです。

$userIDが関数のパラメータとして参照されていますが、使用されていません。それはちょうど$userであるべきですか?

1

エラーを出力するようにPHPを設定する必要があります。

あなたのクエリは「avarage」という仮想列を作成しますが、あなたのPHPコードでは「平均」というスペルが使用されています。エラーをオンにすると、これが非常に明白になりました。

+0

良い点!私はスペルミスを気付かなかった。しかし、あなたは正しい、PHPの通訳はそれを見逃していないだろう。 –

+0

それを指摘してくれてありがとう、私はそれを修正したが、問題を解決しません。 – JerryH

関連する問題