2011-12-26 2 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

ответ

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

должен работать .. учитывая, что вы предоставите аргумент этой функции, которая, кажется, прерывания INT .. или номер документа из столбца идентификаторов из таблицы пользователей в БД.

В основном у вас есть HTML-форма, которая принимает имя пользователя и проверяет базу данных для этого идентификационного номера пользователей в таблице пользователей в базе данных. Как только он имеет это число, он будет передать его функции 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

+0

@tuergeist - Правильно. Но дело здесь в том, чтобы показать, как должно выглядеть состояние. В любом случае, я отредактировал ответ. –

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

else { 
    //do that 
} 

Вы должны использовать ==, а не = как = операнд устанавливает значение истинно в коде вы написали, в то время как == операнд сравнивает возвращаемое значение true.

1

С вашего возвращения истинное или ложное значение, которое вы можете просто использовать:

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)