这是对此(已解决)的一个问题: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
部分赋予相同的值,以使用相同的查询返回相同的页面。
答案 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