2012-11-01 31 views
0

这是我为更新数据而写的查询。在php中更新数据库

$sql=makeSQL($myVals,$fieldsu, 
     "update users set", 
     "where id='".mysql_real_escape_string($_POST["PID"])."'"); 

但我得到一个错误的

update users set'Amol','Kulkarni','[email protected]','amol','9870004268')Error Save [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Amol','Kulkarni','[email protected]','amol','9870004268')' at line 1] 

建议我在这....

+1

什么是makeSQL?而且,这是一个语法错误,因为你写的不是SQL。 – Ariel

+0

您的'makeSQL'函数正在生成不正确的SQL查询。 – air4x

+0

您的问题是错误 – Elby

回答

2

你必须指定要设置这样

update your_table set col1 = 'a', col2 = 'b' where id = 3 
的列

您的代码易受SQL注入攻击。请先解决这个问题。见best way to prevent SQL injection in PHP

+0

在什么基础上这是易受SQL注入? –

+0

直接使用来自Web的输入参数。 –

+0

这不是直接的,因为变量通过'mysql_real_escape_string'传递 –

0

试试这个:

$sql=makeSQL("update users set colname1=$myVals, cloname2=$fields 
     where id='".mysql_real_escape_string($_POST["PID"])."'"); 

通知的SET子句中的语句需要设置的值一起。

+0

我正在尝试这一个,但我又收到错误保存[您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,在第1行使用''u'''') – Santosh

+0

即使修改,您也需要担心如果将'$ myVals'和'$ fields'转换为字符串if列是字符串,并且担心[SQL注入](http://xkcd.com/327),即使它们不是。尽管如此,SQL语法更接近完美。 –