1

私の sysntax はどうなっているのですか。正しく理解できません。より良い方法はありますか?

<?
            $uid = $_GET["uid"];
            $month= $_GET["month"];
            $year = $_GET["year"];
            $query = "SELECT taskname,uid,month,year, SUM(tasktime) FROM tictoc WHERE uid = $uid, month = $month, year = $year GROUP BY taskname"; 

            $result = mysql_query($query) or die(mysql_error());

            // Print out result
            while($row = mysql_fetch_array($result)){
                echo "<br />";
                echo "Total ". $row['taskname']. " = <strong>". $row['SUM(tasktime)']."</strong>";
                echo "<br />";
            }
            ?>

エラーは次のとおりです。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' month = 'Aug', year = '2012' GROUP BY taskname' at line 1
4

2 に答える 2

9

AND次のように、コンマではなくを使用する必要があります。

select taskname, uid, month, year, SUM(tasktime)
from tictoc
where uid = $uid
    and month = $month
    and year = $year
group by taskname

また、次の行に注意してください。

echo "Total ". $row['taskname']. " = <strong>". $row['SUM(tasktime)']."</strong>"; 

動作しないでしょう。次のように、クエリで合計にエイリアスを設定し、そのエイリアスを参照する必要があります。

SELECT taskname,uid,month,year, SUM(tasktime) as SumTaskTime

そして、次のようにします。

echo "Total ". $row['taskname']. " = <strong>". $row['SumTaskTime)']."</strong>"; 
于 2012-09-13T16:28:34.507 に答える
1

前の答えを補足するために、パラメーターが空になっていないことを確認してください。例えば:

 $uid = $_GET["uid"] = $_GET["uid"] == "" ? 0 : $_GET["uid"];
 $month = $_GET["month"] = $_GET["month"] == "" ? 0 : $_GET["month"];
 $year = $_GET["year"] = $_GET["year"] == "" ? 0 : $_GET["year"];

または、チェック戦略を選択してください。

その理由は、それらが空で到着し、それを検証しない場合、SQLステートメントを誤って作成し、報告しているエラーが発生するためです。

于 2012-09-13T16:41:36.810 に答える