所以我在php中使用sql但是一个变量不起作用。变量 $ pagina 在 $ sql 中工作,但不在 else {}($ sql2和header)中。其他变量可以工作($ naam和$ bericht)。任何人都可以发现错误吗?(对不起,我的英语可能出现任何错误。)
<?php
$bericht = $_POST ['bericht'];
$pagina = $_GET ['id'];
$naam = $_SESSION['login'];
$con = mysqli_connect("host","sql","pw","sql");
if (empty($bericht)) {
}
else
{
$sql2="INSERT INTO Comments (bericht_id, naam, bericht) VALUES ('$pagina', '$naam', '$bericht')";
mysqli_query($con,$sql2);
header("location:directbericht.php?id=$pagina");
}
$sql="SELECT * FROM Berichten WHERE id = $pagina";
if ($result=mysqli_query($con,$sql))
{
while ($obj=mysqli_fetch_object($result))
{
echo $obj->naam;
echo "<br><br>";
echo $obj->bericht;
echo "<br><br>";
echo $obj->datum;
echo "<br><br>";
}
}
$sql="SELECT * FROM Comments WHERE bericht_id = $pagina ORDER BY id ASC";
if ($result=mysqli_query($con,$sql))
{
while ($obj=mysqli_fetch_object($result))
{
echo "<tr><td><font color='white'>";
echo $obj->naam;
echo "<br><br>";
echo $obj->bericht;
echo "<br><br>";
echo $obj->datum;
echo "<br><br>";
echo "</font></tr></td>";
}
}
?>
答案 0 :(得分:0)
您的代码存在一些重大问题。
第一个,也是最重要的处理是如何将数据插入数据库。正如目前所写,您很容易受到SQL injection攻击。请阅读有关如何使用mysqli bind parameters的信息,或者更好的是升级到PDO。
其次,您尝试在同一逻辑路径中使用$_POST[]
和$_GET[]
来提取数据。 http连接将是 post , get 或其他类型的请求。它将从不两者兼而有之。当你输入一个数字时,这可能是有效的,但是当你尝试使用$_GET[]
时却不行。