2010-06-22 97 views
0

我在一個mySQL數據庫中存儲了一堆用戶ID以及與每個uid相關的其他數據,但是現在我想在程序的開頭部署一個基本上如此的檢查,如果用戶已經存在,則獲取該特定用戶的指定字段並將它們分配給變量,否則返回null。正在搜索mySQL數據庫

$query = mySQL query; 

if ($query){ 
    do this... 
}else{ 
    do that... 
}; 

我假設它看起來像那樣?

我對我的語法有點不確定,對mySQL也不太瞭解,這就是爲什麼我要求提供一些幫助,thanx提前!

回答

1

這裏的東西,讓你開始,假設你連接到數據庫..

$query = "SELECT name, email FROM user WHERE id = $id"; 
$result = mysql_query($query); 
if ($arr = mysql_fetch_assoc($result)) 
{ 
    // either return $arr or build something else with 
    // individual column values, something like this 
    // (would require you to define a User class) 
    $name = $arr['name']; 
    $email = $arr['email']; 
    return new User($name, $email); 
} 
else 
{ 
    return null; 
} 

好吧,按照要求,確保做這樣的事情與任何變量(你不將它們插入到你的SQL查詢之前,有超過100%的控制):

$id = mysql_real_escape_string($id); 

但是,我不得不說,我的應用程序,用戶IDS來自我信任的來源 - 不是來自用戶輸入。

+2

請使SQL注入證明。 – Anax 2010-06-22 07:29:41

1

不完全。讓查詢拉出所有需要的字段WHERE uid=:uid,然後檢查通過mysql_num_rows()等返回的行數。在0上返回null,否則從行中提取值。

1
$query = "SELECT `name`, `email` FROM `user` WHERE `id` = '$id' LIMIT 1"; 
$sql = mysql_query($query); 
$count = mysql_num_rows($sql); 

if ($count >= 1) 
{ 
    $name = mysql_result($sql,0,'name'); 
    $email = mysql_result($sql,0,'email'); 
    return /*whatever u need to return*/; 
} 

也ü不應該算在if()任何特別是在循環。