Числовой параметр запроса Get по какой-то причине отображается как ноль - PullRequest
0 голосов
/ 16 апреля 2011

У меня есть тестовая страница, с которой я играю, и, возможно, это слишком рано утром, но мне кажется, что я сталкиваюсь с чем-то странным:

У меня есть этот URL: http://www.comehike.com/outdoors/trip_story.php?hike_id=108

для входа в систему логин: test@comehike.com пароль: пароль

Я делаю это, чтобы получить параметр hike_id:

$hike_id = mysql_real_escape_string($_GET['hike_id']);
$errors = array();
if ( isset ( $hike_id ) && !empty ($hike_id)  )
{
   $errors[] = 'Hike id was empty.  Could not get the hike information';
}

Но идентификатор похода равен 0, как показанопозже на странице, когда я вывожу вещи на экран.Таким образом, поскольку hike_id равен 0, он проходит тот проверочный тест, который является ошибкой.Любая идея, почему это произойдет, поскольку переданный hike_id равен 108?

1 Ответ

3 голосов
/ 16 апреля 2011

У вас есть недостатки в вашей логике.что ваш оператор if действительно спрашивает:

"если $ hike_id установлен и не пуст, выдается ошибка"

0 равно пусто и ваше заявление не приведет к ошибке.Попробуйте с другим значением, например 1, и посмотрите, что произойдет.

Кроме того, почему вы используете mysql_real_escape_string там?Подождите с экранированием, пока не будете использовать значение в запросе SQL.Обратите внимание, что mysql_real_escape_string требует активного подключения к базе данных, в противном случае он вернет false (что интерпретируется как ноль в числовом контексте; может, поэтому 108 преобразуется в 0?)

...