我有一个像这样定义的表:
create table users (
id int(10),
age int(3),
name varchar (50)
)
我想使用查询来更新age
,它是一个整数,来自html表单。
当它到达更新它的方法时,它以字符串形式出现,所以我用PHP将其更改为整数并尝试更新表,但它不起作用
$age = intval($age);
$q2 = "UPDATE users SET age='$age' where username like '$username';";
mysql_query($q2,$con);
答案 0 :(得分:2)
您的查询使用字段username
,但您的CREATE语句显示name
此外,您应该真正考虑使用prepared statements来避免SQL注入攻击(如果有人提供了用户名' OR 1=1;--
,那么事情就会破坏)。最后,您是否有理由username LIKE '$username'
而不仅仅是username = '$username'
?如果$username
中没有%s,那就相同了
答案 1 :(得分:1)
无需将$age
字符串转换为整数。
更重要的是,使用mysql_real_escape_string()
来防止SQL注入。
$q2 = "UPDATE users SET age = " . mysql_real_escape_string($age, $con)
. " WHERE name = '" . mysql_real_escape_string($username, $con) . "'";
mysql_query($q2, $con);