使用PHP更新MySQL DB中的整数定义列

时间:2010-05-08 21:09:06

标签: php mysql

我有一个像这样定义的表:

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);

2 个答案:

答案 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);