Php-MySQL UPDATE&从4.1升级到MySQL 5.5后,INSERT停止工作

时间:2014-04-02 17:39:15

标签: php mysql mysql5

突然,GD昨晚从4.1版到5.5版更新了他们的MySQL服务器。现在,我刚刚意识到将新数据行更新或插入表中的算法不再有效。这就是我所拥有的(自2007年以来我一直在使用相同的算法,没有任何问题,也许现在有点过时了):

    if($error_msg == "") 
        {
            $sql = "UPDATE ".$db_prefix."cars SET
                stored='".$_POST['stored_year']."-".$_POST['stored_month']."-".$_POST['stored_day']."',
                year='".add_slashes($_POST['year'])."',
                model='".add_slashes($_POST['model'])."',
                type='".add_slashes($_POST['type'])."',
                typemodel='".add_slashes($_POST['typemodel'])."',
                bodystyle='".add_slashes($_POST['bodystyle'])."',
                engine='".add_slashes($_POST['engine'])."',
                trans='".add_slashes($_POST['trans'])."',
                drive='".add_slashes($_POST['drive'])."',
                color='".add_slashes($_POST['color'])."',
                condition='".add_slashes($_POST['condition'])."',
                millage='".add_slashes($_POST['millage'])."',
                vin='".add_slashes($_POST['vin'])."',
                price='".add_slashes(strip_out($_POST['price']))."',
                low='".add_slashes(strip_out($_POST['low']))."',
                high='".add_slashes(strip_out($_POST['high']))."',
                features='".$features_total."',
                comments='".add_slashes($_POST['comments'])."',
                mk_comment='".add_slashes($_POST['mk_comment'])."',
                title_page='".add_slashes($_POST['title_page'])."',
                certified='".add_slashes($_POST['certified'])."',
                sold='".add_slashes($_POST['sold'])."',
                sold_txt='".add_slashes($_POST['sold_txt'])."',
                se_index='".add_slashes($_POST['se_index'])."',
                one_owner='".add_slashes($_POST['one_owner'])."',
                special= '".$special."'
            WHERE id=".$_GET["id"];

    if(@mysql_query($sql)) die(header("Location: index.php?status=update"));
else
    $error_msg = "Record was not updated because of invalid data posted.";
}

我得到: “由于发布的数据无效,记录未更新。”

没有显示任何其他错误。我只是读了这个post,它说从MySQL 5.0开始,你应该在表名$ sql =“INSERT INTO database之前包含数据库名称。table({{1 },columnOne)...但不确定。

如果你知道为什么这个UPDATE不再起作用,我真的很感激任何帮助。


编辑:取自OP的评论:(对于那些对columnTwo功能的使用感到疑惑的人)。

从本地函数文件中插入

add_slashes()

add_slashes

编辑:我尝试添加 mysql_error(),我得到了:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'condition ='good'附近使用正确的语法,millage ='7087',vin ='2BFKOPP25B5YR501',价格'在第12行

1 个答案:

答案 0 :(得分:3)

condition是保留字http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html,很可能是原因。

尝试(使用单词condition周围的反引号)

`condition`='".add_slashes($_POST['condition'])."',

Plus ,如果可能的话,请尝试使用另一个单词作为列名。


在过去的MySQL发行版中,condition当时并不是一个保留词,它解释了当你使用4.1并从那时升级到5.5后它为什么起作用。

自版本5.0

condition成为保留字


<强>脚注:

mysql_*函数弃用通知:

http://www.php.net/manual/en/intro.mysql.php

从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqliPDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。

这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/

可以在»http://dev.mysql.com/doc/找到MySQL的文档。