第$id=$_GET['id'];
行有一个错误说注意:第101行的D:\ XAMPP \ htdocs \ view_topic.php中的未定义索引:id 。我试图将“$ _GET”更改为“$ _POST”,但错误仍然相同。有什么帮助吗?
我正在尝试从数据库中检索id并列出用户发布的所有论坛主题。其他php文件可以顺利运行。我在检索帖子的ID时遇到了问题。
<?php
$host="localhost";
$username="root";
$password="";
$db_name="db";
$tbl_name="forum_question";
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// get value of id that sent from address bar
$id=$_GET['id'];
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
答案 0 :(得分:0)
在将数据分配给来自外部世界的变量时,始终使用 isset
构造
if(isset($_GET['id']))
{
$id=$_GET['id'];
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
}
else
{
echo "ID was not set. Let me go and check the form again !";
}
?>
答案 1 :(得分:0)
必须在您的网址中设置此变量。你必须检查它是否存在:
<?php
$host = "localhost";
$username = "root";
$password = "";
$db_name = "db";
$tbl_name = "forum_question";
// Connect to server and select databse.
$db = new mysqli($host, $username, $password, $db_name);
// get value of id that sent from address bar
$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
if($id <> 0) {
// TODO
// 404 Not Found
} else {
$sql = "SELECT * FROM $tbl_name WHERE id='$id'";
$row = $db->query($sql)->fetch_assoc();
// TODO
// Do Something with Data
}
您的网址必须为http://example.com/path/to/script.php?id=42
(int)
,因此无法进行sql注入。mysql_*
,请参阅对您的问题的评论。