2009-08-23 3 views
0

Выполняет ли функция add_new_user запрос SQL INSERT, если он находится внутри предложения if?Будут ли выполняться побочные эффекты в этом случае, если пункт

У меня есть функции

function add_new_user ($username, $email, $passhash_md5) 
{ 
    -- cut: database INSERT queries 
    return 1;                         
} 

Я использую код, указанный выше в качестве

if (validate($username, $password, $email) == 1) { 
    if (add_new_user ($username, $email, $passhash_md5) == 1) { 
       // problem here 
       -- cut 
    }                           
} 

Я задал этот вопрос, потому что я не знаю, почему this handler всегда дает неудачную registraton уведомление. Эти два кода принадлежат обработчику. Кажется, что ошибка связана с синтаксисом моего кода и, возможно, с использованием if/else.

+0

Благодарим за ответы! –

ответ

4

Работает ли функция add_new_user Вкладыше запрос SQL, если он находится внутри если -clause?

Да

function foo() { 
    echo 'A'; 
    return true; 
} 

function bar() { 
    echo 'B'; 
    return false; 
} 

if (foo()) { 
    if (bar()) { 
    echo 'C'; 
    } 
} 
// Output: AB 
3

Да

Функция первого получить-х оценивали это возвращаемое значение.

После того, как возвращаемое значение, как известно, возвращаемое значение сравнивается с целочисленным значением 1.

1

Да. Все, что находится между if ( и ) {, выполняется, чтобы проверить, является ли оно истинным. Вы можете сделать что-нибудь здесь действительно.

1

PHP должен оценивать булево выражение, чтобы знать, будет ли он выполнять блок или нет. Итак, чтобы оценить оператор «==», ему необходимо оценить обе стороны, включая функцию «add_new_user».

Итак, ответ: да, он будет оценивать функцию add_new_user И он будет выполнять операцию вставки (если у вас есть некоторый код внутри add_new_user, который будет блокировать это).

Однако вы делаете то, чего следует избегать, когда это возможно: вы используете условие с побочными эффектами! Это даст вам головные боли (например, прямо сейчас!).

+0

Не могли бы вы прояснить, что вы подразумеваете под действием побочных эффектов. Однако ваш ответ подсказывает мне, что нет необходимости проверять, была ли эта функция доступна. ** Мне все же хотелось бы посмотреть, был ли запрос каким-то образом. ** –

+1

Побочные эффекты: запись на диск/потоки/база данных, открытие соединений и т. Д. Вы должны знать, какая функция имеет побочные эффекты (add_new_user имеет один, например). Затем вы должны знать, что при вызове этих функций возникает побочный эффект. Ваш исходный вопрос может быть перефразирован как: «будет ли побочный эффект выполнен с этим утверждением« if »?». Конечно, вам нужно проверить, было ли это успешным, и ваш способ сделать это неплохо. Просто имейте в виду, что я сказал о побочных эффектах. Google для «чистой функции» или «функции побочного эффекта» для получения дополнительной информации! –

Смежные вопросы