Примечание: неопределенный индекс - PullRequest
1 голос
/ 21 июня 2009
$thread_id = (isset($_GET['id']));
$thread_id = intval($_GET['id']);

$q = mysql_query("SELECT * FROM threads WHERE id = $thread_id");

Разве вы не можете использовать две функции для одной переменной ?? Как вы можете видеть, я проверяю, установлен ли он, но он все равно дает мне:

Примечание: неопределенный индекс: id в C: \ wamp \ www \ bfhq \ thread.php в строке 7

Ответы [ 4 ]

5 голосов
/ 21 июня 2009

Попробуйте это:

$thread_id = isset($_GET['id']) ? intval($_GET['id']) : 0;

Что читается как "если установлено $_GET['id'], установите $thread_id в intval($_GET['id']), если нет - в 0"

3 голосов
/ 21 июня 2009

isset () возвращает логическое значение: TRUE / FALSE. Если вы хотите определить, установлен ли $ _GET ["id"], это нужно сделать в выражении IF или через троичный оператор.

if (isset($_GET["id"])) {
  $thread_id = $_GET["id"]; // Bad idea taking values in from $_GET directly
} else {
  die("Thread id not set");
}
0 голосов
/ 21 июня 2009

Вы можете избавиться от всех уведомлений, просто используя error_reporting (4); . Другой, возможно грубый, но работающий метод для подавления уведомления и очистки переменной может быть:

$thread_id = (int)@$_GET["id"];

Если вы делаете много таких вещей, вы, возможно, захотите взглянуть на filter_var () и поместить всю функциональность в отдельную функцию (например, get_int ("id")).

0 голосов
/ 21 июня 2009

Эта ошибка зависит от уровня ошибки / предупреждения, установленного в php.ini. Хорошей практикой является использование ...

array_key_exists('id', $_GET);

http://us2.php.net/manual/en/function.array-key-exists.php

также: убедитесь, что вы очищаете этот ввод от $ _GET, прежде чем сделать это. Вы оставляете себя открытым для MySQL инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...