$thread_id = (isset($_GET['id']));
$thread_id = intval($_GET['id']);
$q = mysql_query("SELECT * FROM threads WHERE id = $thread_id");
你不能在一个变量上使用两个函数吗?正如你所看到的那样,我检查它是否有它但是它仍然给了我:
注意:未定义的索引:第7行的C:\ wamp \ www \ bfhq \ thread.php中的id
答案 0 :(得分:5)
试试这个:
$thread_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
如果设置$_GET['id']
,则将$thread_id
设置为intval($_GET['id'])
,否则设置为0“
答案 1 :(得分:3)
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");
}
答案 2 :(得分:0)
此错误取决于php.ini中设置的错误/警告级别。使用它的好习惯......
array_key_exists('id', $_GET);
http://us2.php.net/manual/en/function.array-key-exists.php
另外:确保在执行此操作之前清除$ _GET中的输入。你将自己打开mysql注入。
答案 3 :(得分:0)
只需使用error_reporting(4);即可删除所有通知。另一种可能是原始但有效的方法来抑制通知并清理变量可能是:
$thread_id = (int)@$_GET["id"];
如果你做了很多这些事情,你可能想看一下filter_var()并将所有功能放到一个单独的函数中(例如.get_int(“id”))。