2011-08-31 99 views
0

我有一个更新声明,因为某些原因似乎无法解决。MySQL更新问题

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,teacherid是538吗? –

+1

'mysql_query()'后回显'mysql_error()'。如果这是一个语法错误,它将变得很简单。 –

+0

另外,你的三个日期列是MySQL DATETIME类型,还是INTs接受来自PHP的UNIX时间戳? –

回答

0

尝试使用

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

和回声mysql_error看到异常。

0

主要是因为有您的查询MySQL中保留字状公共, 您应该使用`引用这一点。

编辑:public不是mysql保留字,请尝试mysql_error()以查看错误消息。

+0

'public'不是保留关键字:http://dev.mysql.com/doc/refman/5.0/en /reserved-words.html –

0

你能让我知道你得到的错误/异常。

我想到了列的长度有问题。列标签的长度太短而不能保持给定的值。