Работа с функциями PHP - PullRequest
       4

Работа с функциями PHP

1 голос
/ 26 декабря 2011

У меня есть эта функция, которая будет проверять, существует ли пользователь в БД или нет:

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
}

Пожалуйста, помогите мне, я новичок в этом.

Спасибо

Ответы [ 6 ]

1 голос
/ 26 декабря 2011

Поскольку вы возвращаете истинное или ложное значение, вы можете просто использовать:

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
1 голос
/ 26 декабря 2011
if (checkTwitterAccount($user_id) == true) {
    //do this
}

else {
    //do that
}

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

1 голос
/ 26 декабря 2011
if (checkTwitterAccount($user_id)) { //true
//do something
} else { //false
//do something
}
1 голос
/ 26 декабря 2011
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 голосов
/ 26 декабря 2011

Вы можете сократить ориг.функция.

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_ .(См операторы сравнения )

0 голосов
/ 26 декабря 2011
if (checkTwitterAccount($user_id) == true){
 do something if its true
} else {
 do something if its flase
}

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

По сути, у вас есть HTML-форма, которая принимает имя пользователя и проверяет базу данных. для этого идентификатора пользователя номер в таблице пользователей в базе данных. Как только у него будет этот номер, он будет передать его в функцию checkTwitterAccount ($ user_id) , если эта функция возвращает True, что означает угадывание по имени функции того, что у пользователя есть учетная запись в твиттере, в противном случае у него его нет.

вы могли бы сделать:

if (checkTwitterAccount($user_id) == true){
 echo "This user has a twitter account";
} else {
 echo "This user does not have a twitter account";
}
...