$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»)).