我有一些产品存储在一个名为“product_id”的自动递增 ID 的表中。
我已经设法创建一个页面,显示从数据库中选择的产品名称列表,并为每个产品动态创建链接。假设我有苹果产品。当我点击苹果时,它带我到 view_product_details.php?id=9
但是当我点击 apple 时,view_product_details.php 页面告诉我 “注意:第 16 行 C:\xampp\htdocs\working\product-website-exercise\view_product_details.php 中的未定义索引:product_id”
<?php
//$result = mysql_query("SELECT * FROM temaproduct.products WHERE ID = '".mysql_real_escape_string($_GET['product_id'])."'");
$id = $_GET['product_id']; //This is line 16
$result = mysqli_query($conn,"SELECT * FROM products WHERE ID = $id");
echo $result['product_description'];
echo "<br>";
var_dump($result);
?>
我尝试了不同的查询但无法弄清楚,请帮助我正确建立连接,以便我可以根据 product_id 从 view_product_details 页面上的表中读取其他字段。
编辑:谢谢你们,在你们的帮助下,如果每个人都需要这个片段,这里是现在可以工作的代码:
<?php
$id = intval($_GET['id']);
$sql = mysqli_query($conn,"SELECT * FROM products WHERE product_id = ".$id);
if(mysqli_num_rows($sql)){
$product_data = mysqli_fetch_array($sql);
echo "<h2><center>".$product_data['title']."</h2></center>";
}
?>
最佳答案
您在此 URL 中使用 id 作为查询字符串:
view_product_details.php?id=9
因此,您需要获取 id 为:
$id = $_GET['id']; //This is line 16
代码中的第二个问题是,如果不使用 mysqli_fetch_*
函数,则无法从数据库中获取结果。
echo $result['product_description']; // this will return nothing
您修改后的代码:
<?
$id = intval($_GET['id']);
$sql = mysqli_query($conn,"SELECT * FROM products WHERE ID = ".$id);
if(mysqli_num_rows($sql)){
$result = mysqli_fetch_array($sql);
echo $result['product_description'];
}
else{
echo "No record found";
}
?>
建议:
你还需要做一件事,如果任何一个传递字符串或查询字符串中的任何其他内容比你的查询不会返回错误只返回 0 记录,请使用 intval()
函数,如:
示例:
view_product_details.php?id=abcdJUNK
将其转换为 0 为:
$id = intval($_GET['id']);
对于 future 的访问者:
调试后,发现这个错误“Unknown Column ID”
正如 OP 提到的那样,正确的查询是这样的(列名是 product_id):
SELECT * FROM hangouts WHERE product_id = 9
关于PHP MYSQL $_GET ['ID' ] 来自动态生成页面上的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35061991/