Php-MySQL Update & insert 从 4.1 升级到 MySQL 5.5 后停止工作



突然GD昨晚将他们的MySQL服务器从4.1版本更新到5.5版本。现在,我刚刚意识到将新数据行更新或插入表中的算法不再起作用。这就是我所拥有的(自 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.";
}

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

它没有显示任何其他错误。我刚刚读了这篇文章,它说从MySQL 5.0开始,您应该在表名$sql ="插入database"之前包含数据库名称。tablecolumnOnecolumnTwo )...但不确定。

如果您知道为什么此更新不再起作用,我将非常感谢任何帮助。


编辑:摘自OP的评论:(对于那些想知道add_slashes()功能使用的人)。

add_slashes从本地函数文件插入。

function add_slashes($string) { 
        if (!get_magic_quotes_gpc()) 
                return addslashes($string); 
        else
                return $string; 
}

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

您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在第 12 行的"condition='good', millage='7087', vin='2BFKOPP25B5YR501', price' 附近使用的正确语法

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

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

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

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


在过去的MySQL版本中,condition当时不是一个保留字,这解释了为什么当你使用4.1并升级到5.5时它对你有用。

  • http://dev.mysql.com/doc/refman/4.1/en/reserved-words.html

condition从版本 5.0 开始成为保留字

  • http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

脚注:

mysql_*函数弃用通知:

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

从 PHP 5.5.0 开始,此扩展已弃用,不建议用于编写新代码,因为它将来会被删除。相反,应该使用 mysqliPDO_MySQL 扩展。另请参阅 MySQL API 概述,以获取选择 MySQL API 时的进一步帮助。

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

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

相关内容

  • 没有找到相关文章

最新更新