2011-08-31 10 views
0

何らかの理由でうまくいかないような更新ステートメントがあります。MySQL UPDATEの問題

else if (isset($_POST['save'])) { 
    $query = "UPDATE assignments 
       SET expdate = '$expdate', 
        dispdate = '$dispdate', 
        duedate = '$duedate', 
        name = '$name', 
        cat1 = '$cat1', 
        cat2 = '$cat2', 
        cat3 = '$cat3', 
        schoolid = '$schoolid', 
        classid = '$classid', 
        public = '$public', 
        tags = '$tags', 
        description = '$description', 
        symbol = '$symbol' 
      WHERE id = '$assignmentid' 
       AND teacherid = '$uid'"; 
    echo $query; 
    mysql_query($query); 
} 

私は多く試しましたが、行を更新するようには思えません。 echo $query;がクエリを出力するので、関数が実行されていることがわかります。

変数が解析された後、特定の文字列は次のとおりです。

UPDATE assignments 
    SET expdate = '1325401200', 
     dispdate = '1293865200', 
     duedate = '1325401200', 
     name = 'Test 7', 
     cat1 = '138', 
     cat2 = '0', 
     cat3 = '0', 
     schoolid = '1', 
     classid = '33', 
     public = '1', 
     tags = 'New Vista High School,,80302,Patrick,Turmala,Test 7,,,138,No sub-categories,No sub-categories,test7,2012,testNew Vista High School,,80302,Patrick,Turmala,Test 7,,,138,0,0,teste,2012,testes', 
     description = 'Test 7', 
     symbol='teste' 
WHERE id = '21' 
    AND teacherid = '538' 

それは構文エラーですか?何が起こっている?

誰にも感謝します。

+0

行のIDが21で、教師IDが538ですか。 –

+1

'mysql_query()'の後に 'mysql_error()'をエコーし​​ます。構文エラーの場合、それは明白になります。 –

+0

また、MySQL DATETIME型の3つの日付列か、PHPからUNIXのタイムスタンプを受け付けるINTですか? –

答えて

0

は、例外を参照してください

UPDATE assignments set `fieldname`= values where ... 

とエコーmysql_errorを使用するようにしてください。

0

あなたはそれを引用する`を使用する必要があります 公共、のようなクエリでのMySQLの予約語がある主な理由。

編集:publicはmysql予約語ではありません。エラーメッセージmsgを表示するにはmysql_error()を試してください。

+0

' public'は予約済みのキーワードではありません:http://dev.mysql.com/doc/refman/5.0/en /reserved-words.html –

0

エラー/例外をお知らせします。

欄の長さに問題があると思いました。列タグの長さが短すぎて、指定された値を保持できません。