I have a ta开发者_运维百科ble defined like this:
create table users (
id int(10),
age int(3),
name varchar (50)
)
I want to use a query to update just age, which is an integer, that comes from an html form.
When it arrives to the method that updates it, it comes as a string, so I change it to integer with PHP and try to update the table, but it doesn't work
$age = intval($age);
$q2 = "UPDATE users SET age='$age' where username like '$username';";
mysql_query($q2,$con);
Your query uses the field username, but your CREATE statement says name
Also, you should really look into using prepared statements to avoid SQL injection attacks (if someone provides the username ' OR 1=1;-- things are going to break). Finally, is there a reason you're doing username LIKE '$username' instead of just username = '$username'? If $username has no %s in it it amounts to the same thing
No need to cast your $age string to an integer.
More importantly, use mysql_real_escape_string() to protect against SQL injection.
$q2 = "UPDATE users SET age = " . mysql_real_escape_string($age, $con)
. " WHERE name = '" . mysql_real_escape_string($username, $con) . "'";
mysql_query($q2, $con);
加载中,请稍侯......
精彩评论