突然,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行
答案 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后它为什么起作用。
condition
成为保留字
<强>脚注:强>
mysql_*
函数弃用通知:
http://www.php.net/manual/en/intro.mysql.php
从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqli或PDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。
这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/。
可以在»http://dev.mysql.com/doc/找到MySQL的文档。