1
$id = $_REQUEST["Uid"];

$query = "update prd set name='".$_POST['nm']."', char='".$_POST['ch']."', price='".$_POST['pr']."', sp_pri='".$_POST['spr']."', is_eli='".$_POST['enb']."', upd='".$_POST['ud']."', img='".$_FILES['img']['name']."', c_id='".$_POST['cid']."' where id=".$id;

$r = mysql_query($query) or die(mysql_error());
if ($r == 1)
    echo "Record Updated";

我从这个查询中得到以下错误,但我不知道如何解决它 - SQL 对我来说看起来不错!我究竟做错了什么?

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'char='b', price='150', sp_pri='100', is_eli='Yes', upd='Mon Jul 23 2012 17 附近使用正确的语法:23:24' 在第 1 行

4

2 回答 2

8

char是 SQL 中的保留字。如果您使用此类关键字作为列名,则必须将它们括在反引号中(就像您应该始终使用列名一样)!

$query="update prd set `name`='".$_POST['nm']."', `char`='".$_POST['ch']."', `price`='".$_POST['pr']."', `sp_pri`='".$_POST['spr']."', `is_eli`='".$_POST['enb']."', `upd`='".$_POST['ud']."', `img`='".$_FILES['img']['name']."', `c_id`='".$_POST['cid']."' where `id`=".$id;

此外,通过将$_POST变量直接添加到查询中而无需事先对其进行清理,您的系统就会受到任何类型的攻击,从而危及您的数据和网站。

看看mysqliPDO来规避这些问题。

于 2012-07-25T08:27:01.507 回答
1

除了 Sirko 的建议之外,在分配给upd日期的字段中 - 您应该使用STR_TO_DATE

于 2012-07-25T08:32:13.607 回答