0

尝试更新我的 mysql 服务器中的表时,我遇到了一个奇怪的问题。

编码:

    $name = trim(FilterText($_POST['name']));
$description = trim(FilterText($_POST['description']));
$type = $_POST['type'];

if($groupdata['type'] == "3" && $_POST['type'] != "3"){ echo "You may not change the group type if it is set to 3."; exit; } // you can't change the group type once you set it to 4, fool
if($type < 0 || $type > 3){ echo "Invalid group type."; exit; } // this naughty user doesn't even deserve an settings update

if(strlen(HoloText($name)) > 25){
    echo "Name too long\n\n<p>\n<a href=\"".WWW."/groups/".$groupid."/id\" class=\"new-button\"><b>Done</b><i></i></a>\n</p>\n\n<div class=\"clear\"></div>";
} elseif(strlen(HoloText($description)) > 200){
    echo "Description too long\n\n<p>\n<a href=\"".WWW."/groups/".$groupid."/id\" class=\"new-button\"><b>Done</b><i></i></a>\n</p>\n\n<div class=\"clear\"></div>";
} elseif(strlen(HoloText($name)) < 1){
    echo "Please give a name\n\n<p>\n<a href=\"".WWW."/groups/".$groupid."/id\" class=\"new-button\"><b>Done</b><i></i></a>\n</p>\n\n<div class=\"clear\"></div>";  
} else {
    mysql_query("UPDATE groups SET name = '".$name."', type = $type, desc='".$description."' WHERE id = $groupid AND ownerid = '".USER_ID."' LIMIT 1") or die(mysql_error());
    echo "Editing group settings successful\n\n<p>\n<a href=\"".WWW."/groups/".$groupid."/id\" class=\"new-button\"><b>Done</b><i></i></a>\n</p>\n\n<div class=\"clear\"></div>";
}

在更新组的 mysql_query 中,我不断收到一条错误消息,指出插入 desc=blahblahbla 时我的 SQL 语法有错误。

当我从查询中取出“desc”部分,并且只插入名称和类型时,查询工作正常,但是当我将 desc 添加回查询时,它再次引发错误。desc 部分没有 '' - 这可能会将其填满,即使有,我也会在代码开头过滤它们。

任何帮助将不胜感激。

如果您想知道,我正在使用 CMS

提前致谢!:)

4

2 回答 2

2

desc是 MySQL 中的保留字,用于order by子句。你必须用反引号来逃避它:

UPDATE .... `desc`=etc...
            ^--  ^--

当然,你也会被几十个爱管闲事的人吓到,他们会声称使用 mysql_*() 函数会导致宇宙在 5...4...3...

于 2012-09-16T02:03:45.470 回答
0

尝试这个

mysql_query("UPDATE `groups` SET `name` = '".$name."', `type` = $type, `desc` = '".$description."' WHERE `id` = '$groupid' AND `ownerid` = '".USER_ID."' LIMIT 1") or die(mysql_error());
于 2012-09-16T02:52:51.347 回答