突然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
"之前包含数据库名称。table
( columnOne
, columnTwo
)...但不确定。
如果您知道为什么此更新不再起作用,我将非常感谢任何帮助。
编辑:摘自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 开始,此扩展已弃用,不建议用于编写新代码,因为它将来会被删除。相反,应该使用 mysqli 或 PDO_MySQL 扩展。另请参阅 MySQL API 概述,以获取选择 MySQL API 时的进一步帮助。
这些功能允许您访问 MySQL 数据库服务器。有关MySQL的更多信息可以在» http://www.mysql.com/中找到。
MySQL 的文档可以在 » http://dev.mysql.com/doc/中找到。