Примечание. Неопределенный индекс

$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

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

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

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

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

 if (isset($_GET["id"])) { $thread_id = $_GET["id"]; // Bad idea taking values in from $_GET directly } else { die("Thread id not set"); } 

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

 array_key_exists('id', $_GET); 

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

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

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

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

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