大家好我在mysql数据库中有一个“ammount”字段,它有“varchar(50)”类型。当我将数据插入该字段时,例如ammount = 4 kg即可,但是当我更新该字段时,它会给我以下错误。
Error in query: UPDATE ingredients SET ingredient_name='test recipe',ammount=4 gm where ingredient_id='59'. 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 'gm where ingredient_id='59'' at line 1
我的查询是
$query="UPDATE ingredients SET ingredient_name='$ingredient',ammount=$ammount where ingredient_id='$ingredient_id'";
答案 0 :(得分:2)
1)正确的拼写是“金额”。
2)您不应该对SQL查询使用这样的变量插值。这是非常不安全的。使用prepared statement。
3)在定义$amount
时,您没有在$query
周围加上引号,因此它们不会在最终的替换查询字符串中结束。仔细查看错误消息:它向您显示SQL尝试处理的查询。注意它是如何说ammount=4 gm
的?它无法处理,因为没有引号。
如果你use prepared statements就像你应该的那样,引用会照顾好自己。
答案 1 :(得分:1)
您的查询有:
...,ammount=4 gm where...
这是不正确的。您需要4 gm
周围的引号。
更改
,ammount=$ammount where
到
,ammount='$ammount' where