2011-12-26 41 views
1

我有這樣的功能,將檢查用戶是否已經存在於數據庫與否:用PHP作職能

function checkTwitterAccount($user_id) { 
$accountExists = false; 
$a = "SELECT * FROM twitterAccounts WHERE user_id='".$user_id."'"; 
$ar=mysql_query($a) or die("Error selecting twitter account: ".mysql_error()); 
$ac = mysql_num_rows($ar); 
if ($ac > 0) { 
$accountExists = true; 
} 
return $accountExists; 
} 

現在,當我把這個功能實際上,我怎麼知道,如果用戶是或不是在數據庫中?

我的意思是我該如何調用這個函數,以及如何檢查結果?

下面的權利是?

If (checkTwitterAccount($user_id) = true) { 
DO THIS 
}else{ 
DO THAT 
} 

請幫幫我我是新來的。

感謝

+1

備註:不需要在函數中選擇'*',您不使用任何字段。另外,轉義user_id是有意義的(例如,使用'mysql_real_escape_string'或PDO)。 – a1ex07 2011-12-26 16:01:01

回答

0
if (checkTwitterAccount($user_id) == true){ 
do something if its true 
} else { 
do something if its flase 
} 

應該工作..因爲你從用戶表中的DB該功能似乎是 整型..或id列的ID號提供論據。

基本上你有一個HTML表單,它接受一個用戶名並檢查數據庫中用戶表中用戶ID號的數據庫 。一旦它有這個數字,它將 將它傳遞給函數checkTwitterAccount($ user_id)如果該函數返回True,這意味着通過函數的名稱猜測用戶有一個Twitter帳號,否則他沒有。

你可以這樣做:

if (checkTwitterAccount($user_id) == true){ 
echo "This user has a twitter account"; 
} else { 
echo "This user does not have a twitter account"; 
} 
1
function checkTwitterAccount($user_id) { 
    $user_id = intval($user_id); 
    $a = "SELECT `user_id` FROM `twitterAccounts` WHERE `user_id` = '".mysql_real_escape_string($user_id)."'"; 
    $ar = mysql_query($a) or die("Error selecting twitter account: ".mysql_error()); 
    $ac = mysql_num_rows($ar); 
    return ($ac > 0); 
} 

if(checkTwitterAccount($someid)) { 
    // Exists... 
} else { 
    // No such ID in the DB 
} 

注意比較操作符是==不是=(這是分配)。 所以你可以這樣做:

if(checkTwitterAccount($someid) == true) { 

但是,這裏沒有必要。

還記得清理查詢中的數據。

+0

'SELECT *'不需要,因此效率低下。 – tuergeist 2011-12-26 21:25:14

+0

@tuergeist - 是的。但是這裏的重點是要說明情況應該如何。無論如何,我已經編輯了答案。 – 2011-12-26 21:36:19

1
if (checkTwitterAccount($user_id)) { //true 
//do something 
} else { //false 
//do something 
} 
1
if (checkTwitterAccount($user_id) == true) { 
    //do this 
} 

else { 
    //do that 
} 

你必須使用==,而不是==操作設置在你寫的代碼中值爲true,而==操作返回的值進行比較,以true

1

由於您的返回true或false值,你可以簡單地使用:

If (checkTwitterAccount($user_id)) { 
    //DO THIS 
}else{ 
    //DO THAT 
} 

注意:您的原始行:

If (checkTwitterAccount($user_id) = true) { 

將導致分配錯誤,因爲一個「=」意味着給一個函數分配一個不能完成的值。你想:

If (checkTwitterAccount($user_id) == true) { 

因爲「==」比較值。此外,==只有這麼例如0是積極與假比較比較值,任何數量的與真正的比較積極,如果你想也比較鍵入我們「===」是這樣的:

0 == false //true 
0 === false //false 
false == false //true 
false === false //true 
1 == true //true 
1 === true //false 
true == true //true 
true === true //true 
0

你可以縮短原點。功能。

function checkTwitterAccount($user_id) { 
    $a = "SELECT * FROM twitterAccounts WHERE user_id='" . $user_id . "'"; 
    $ar = mysql_query($a) or die("Error selecting twitter account: " . mysql_error()); 
    return mysql_num_rows($ar) > 0; // boolean (will be true or false) 
} 

然後使用回答max_。 (請參閱comparison operators