通过php中的表单更新mysql数据库

时间:2010-04-11 11:57:56

标签: php mysql

我收到此错误,

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'address ='xxxxx',city ='sssssssss',pincode =''333333333',state ='Assam',count'在第1行

提前致谢。

http://dpaste.com/hold/181959/

4 个答案:

答案 0 :(得分:3)

你的WHERE子句错了,你不写WHERE a=1, b=2, c=3想要的WHERE a=1 AND b=2 AND c=3

另外你的逻辑是有缺陷的,因为你的WHERE子句通常更像是WHERE id = x(当你更新表中的行时,行数据已经与你的行相同)重新更新它 - 如果这有意义吗?:))

此外,学会正确地逃避你的sql字符串,或者让你自己容易受到sql injection

的攻击

答案 1 :(得分:1)

除了oedo解释的问题之外,你还遇到了严重的SQL注入问题。您需要使用mysql_real_escape_string对字符串进行编码以插入到SQL语句中,不是 htmlspecialchars。或者使用参数化查询。

htmlspecialchars()用于将HTML编码文本输出到HTML页面之前。您不应对数据库中存储的字符串进行HTML编码。

答案 2 :(得分:0)

首先,您是否为用户提供某种唯一标识符?也许某种客户身份?您可以使用它来识别WHERE子句中的客户,以使您的SQL更清晰。

其次,您是否希望您的用户完全像在数据库中一样编写所有公司?因为这是您对当前设计的期望。

答案 3 :(得分:0)

您需要使用ID识别记录,而不是字段值。如果您查看很多网站,通常会发送ID来识别记录。比如edit.php?id = 1284,或者view.php?id = 1284等等。

简而言之,您将拥有一个表单,其中填充了该记录ID的数据库中的值。如果您编辑它,则编写一个编辑查询,如:

$UpdateQuery = "UPDATE customer SET name = '" . $name . "', address = '" . $address . "' ....... WHERE id = " . intval($_GET['id']);

我添加intval的原因是因为这只允许数值通过。由bobince指导,注意SQL注入,让mysql_real_escape_string传递你在查询中输入的所有字符串值。