2010-07-30 2 views
0

Я просто хочу узнать из ниже кода, что делает ? и : уточнить, я был бы признателен, если кто-нибудь объяснит мне приведенный ниже код. спасибопростой вопрос о синтаксисе php

$country = empty($_POST['country']) ? die ("ERROR: Enter a country") : mysql_escape_string($_POST['country']); 
+0

возможно дубликат [быстрый вопрос синтаксиса PHP] (HTTP : //stackoverflow.com/questions/889373/quick-php-syntax-question) Давай, это почти тот же заголовок;) –

ответ

3

Это называется тройной оператора и является просто сокращенной этого кода:

if (empty($_POST['country'])) 
{ 
    die ("ERROR: Enter a country"); 
} 
else 
{ 
    $country = mysql_escape_string($_POST['country']); 
} 

Синтаксис:

condition ? used if true : used if false; 

Или вы можете сделать задания:

variable = condition ? used if true : used if false; 

Дополнительная информация:

http://www.tuxradar.com/practicalphp/3/12/4

+0

спасибо, я ожидал ответа вроде этого, я не привык к сокращению .. thank вы за этот ответ ..:) –

+0

Хороший ответ, +1, но вы забыли добавить '$ country =' в блок 'else' –

+0

@Igor Zinov'yevL Да забыл добавить это, спасибо :) – Sarfraz

1

Я полагаю, этот скрипт принимает данные из формы, отправленного методом POST. Если переменная страны пуста, выйдите из сценария с сообщением об ошибке.

mysql_escape_string($_POST['country']);

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

$country = mysql_escape_string($_POST['country']);

Больше информации здесь: http://php.net/manual/en/function.mysql-escape-string.php

1
$country = empty($_POST['country']) ? 
      die ("ERROR: Enter a country") : 
      mysql_escape_string($_POST['country']); 

Если выражение empty($_POST['country']) вычисляется в true, то die ("ERROR: Enter a country") будет оцениваться (и там sult будет присвоен $country, но за то, что die() останавливает выполнение сценария).

С другой стороны, если empty($_POST['country']) имеет значение false, то mysql_escape_string($_POST['country']) будет оцениваться, и результат будет назначен $country.

+0

Привет, в else condidtion i хочу что-то повторить что-то вроде ссылки, чтобы вернуться на индексную страницу, я попытался использовать конкатенацию, и этого не происходит .. проверьте последнюю строку $ user = empty ($ _ POST ['user'])? die («Ошибка: введите имя пользователя»): mysql_escape_string ($ _ POST ['user']). echo "$ _SERVER ['PHP_SELF']"; как я могу это достичь ?? –

+0

Я не уверен, чего вы хотите достичь. Если вы используете '$ user = empty ($ _ POST ['user'])? die («Ошибка: Пожалуйста, введите имя пользователя»): mysql_escape_string ($ _ POST ['user']). $ _ SERVER ['PHP_SELF']; 'тогда, предполагая, что вызов' empty() 'возвращает false,' $ User' будет 'mysql_escape_string ($ _ POST ['user'])' конкатенируется с '$ _SERVER ['PHP_SELF']'. Если вы действительно хотите «эхо» что-то условно, возможно, вам было бы лучше пойти с подходом «if ... else». – Hammerite

1

Это условие теста: если переменные из HTML FORM является пустой, то распечатать «ОШИБКА: Введите страну», иначе установить переменную страну безопасных символы ..

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