2010-05-08 39 views
0

我有一個表像這樣定義:更新在MySQL數據庫的整數定義的列與PHP

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

回答

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

非常感謝 – 2010-05-15 16:06:47

2

您查詢採用現場username,但你的CREATE語句說:name

此外,你真的應該考慮使用prepared statements避免SQL注入攻擊(如果有人提供的用戶名' OR 1=1;--事情會打破)。最後,有沒有一個原因是你在做username LIKE '$username'而不是僅僅是username = '$username'?如果$username中沒有%s,它就等於相同的東西

+0

感謝您的建議! – 2010-05-15 16:06:23