如何在头函数中添加变量?

时间:2015-08-16 10:04:00

标签: php mysql

这是对此(已解决)的一个问题:can I declare variable in a query?

我有一个$_POST表单的页面。在表单下面有一个while循环来显示表单帖子的结果。以下代码应在发送表单后将用户引导回同一页面:

header('Location: thread.php?p= '.$_GET["p"].' ');

由于某些原因header以上代码无法检索结果并发出致命错误:

  

致命错误:在布尔值中调用成员函数fetch_assoc()   第64行的/ thread.php

我想让header代码在将表单添加到表后将我引导回同一个查询。因此,观众可以在发送表格后留在同一页面上。

如何添加“p”值,该值为查询提供线程ID?所以,假设p=400然后header链接应该使用thread.php?p=400

以下代码是查询本身:

$db2 = new MYSQLi('localhost', 'root', '', 'board');
if ($db2->connect_error){
    $message2 = $db2->connect_error;
    //$p = $_GET['p'];
} else {
    $sql2 = 'SELECT * FROM someThread LEFT JOIN someImages ON someImages.TIMESTAMP = someThread.TIMESTAMP WHERE tID = '.$_GET["p"].' ';
    $result2 = $db2->query($sql2);
    if ($db2->error) {
        $message2 = $db2->error;
    }
}
mysqli_close($db2);

此查询为查看者提供表单下的头部帖子(或开头帖子)。 在这一个下面还有另一个查询,它与此非常相似,它将相关帖子提供给此帖子(开放帖子)。

tID = '.$_GET["p"].'

part是赋予thread.php它的线程id值的重要部分。我想给header部分赋予相同的值,以使用相同的查询返回相同的页面。

3 个答案:

答案 0 :(得分:0)

试试这个: 将$_GET转换为查询字符串,然后附加它。

$que = http_build_query($_GET);
header('location: thread.php'."?p=".$que);

答案 1 :(得分:0)

header('Location: thread.php?p= '.$_GET["p"].' ');
//                             ^              ^    get rid of the spaces.

对于p = 400,您将被重定向到thread.php?p=%20400%20,然后thread.php会在数据库中查询tID=' 400 '

此外,尽管大多数现代浏览器都可以处理Location:标头中的相对URI,但RFC 2616要求它是绝对的。

此外,您的代码易受SQL注入攻击。

答案 2 :(得分:0)

我最终使用了$ _POST方法,并添加了以下代码,这些代码更安全且运行良好

Folder

相关问题