使用php编程更新mysql表中的字段值

时间:2012-07-25 08:23:17

标签: php mysql

$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 ='是',upd ='Mon Jul 23 2012 17 :第1行23:24'

2 个答案:

答案 0 :(得分: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以避免此类问题。

答案 1 :(得分:1)

除Sirko的建议外,在作为日期的字段upd的作业中,您应该使用STR_TO_DATE