PHP MYSQL$从动态生成页面的表中获取[';ID';]

PHP MYSQL$从动态生成页面的表中获取[';ID';],php,mysql,database,get,Php,Mysql,Database,Get,我有一些产品存储在一个名为“product_ID”的表中,其ID自动递增 我已经创建了一个页面,其中显示了从db中选择的产品名称列表,并为每个产品动态创建了链接。假设我有苹果产品。当我点击苹果时,我需要查看产品的详细信息。php?id=9 但当我点击苹果时,view_product_details.php页面告诉我 “注意:未定义索引:C:\xampp\htdocs\working\product website exercise\view\u product\u details.php第16行

我有一些产品存储在一个名为“product_ID”的表中,其ID自动递增

我已经创建了一个页面,其中显示了从db中选择的产品名称列表,并为每个产品动态创建了链接。假设我有苹果产品。当我点击苹果时,我需要查看产品的详细信息。php?id=9

但当我点击苹果时,view_product_details.php页面告诉我 “注意:未定义索引:C:\xampp\htdocs\working\product website exercise\view\u product\u details.php第16行中的product\u id”


我尝试了不同的查询,但无法找到答案,请帮助我正确建立连接,以便我可以根据产品id从“查看产品详细信息”页面上的表中读取其他字段

编辑:谢谢你们,在你们的帮助下,如果每个人都需要这个片段,下面是现在可以使用的代码:

<?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
中的值,而不是
product\u id
中的值。这是您的URL
view\u product\u details.php?id=9
这里的值在变量
id
中,即
id=9

$id = $_GET['id']; //This is line 16

您在此URL中将id用作查询字符串,如下所示:

view_product_details.php?id=9
因此,您需要将id获取为:

$id = $_GET['id']; //This is line 16
代码中的第二个问题是,如果不使用
mysqli\u 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";
}
?>
view_product_details.php?id=abcdJUNK
$id = intval($_GET['id']); 
然后将其转换为0作为:

<?
$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";
}
?>
view_product_details.php?id=abcdJUNK
$id = intval($_GET['id']); 

未来访客:

<?
$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";
}
?>
view_product_details.php?id=abcdJUNK
$id = intval($_GET['id']); 
调试后,发现此错误“未知列ID

因此,正如OP所提到的,正确的查询是这样的(列名是product\u id):


实际上,您正在url中的
view\u product\u details.php?id=9
query参数中传递
id

要使用
product\u id
您可以更改url,如
查看产品详细信息.php?product\u id=9
或使用
$\u GET['id']

&更换这条线

$id = $_GET['product_id'];
用这个

$id = $_GET['id'];
您可以使用
get_defined_vars
()检查哪些变量是 可用

此外,我建议您抑制生产中的错误,并在开发中显示所有错误

隐藏生产中的错误

显示开发中的错误


这里有两个问题第一个是html表单中的name属性不同,然后是php中使用的内容我更改了该问题的php代码,第二个问题是缺少将结果转换为Associative数组并直接调用产品描述的功能,请阅读下面代码修改版本中的注释

这是您当前的代码

    $id = $_GET['product_id']; //This is line 16

    $result = mysqli_query($conn,"SELECT * FROM products WHERE ID = $id");

    echo $result['product_description'];
应该是这样的

    // this is the solution for first issue
    $id = $_GET['id']; //This is line 16

    $result = mysqli_query($conn,"SELECT * FROM products WHERE ID = $id");

    // this is the solution for second issue
    // covert it to associative array
    $resultData = mysqli_fetch_assoc($result);

    echo $resultData['product_description'];

显示您是如何通过
product\u id
的?我不知道您的意思。请使用
$\u GET['id']
而不是
$\u GET['product\u id']
然后使用mysql\u fetch\u*从数据库中获取行:)@ThomasRollet@J.Doe:检查连接如果连接正常,$result将返回一个资源id。您的代码中是否检查了$conn connection??在var_dump($sql)中得到什么;这应该返回一个资源id,如果不超过检查您的连接@别那么想,至少你是想杀动物。加入聊天@J.dook,显然,“从ID=9的场所选择*是不正确的,如果有人好奇的话,应该是“从product\u ID=9的场所选择*”。将$\u GET['product\u ID']替换为$\u GET['ID']:)每个人在早期都是新的、困惑的我的兄弟快乐编码…)