You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP AJAX MySQL中无法从URL获取id加载页面的问题求助

问题诊断与解决方案

看起来你遇到的核心问题是AJAX请求没有把URL中的id参数传递给action.php,导致你的SQL查询实际上是在查找photo_id = 'null'(或空值),自然拿不到数据。咱们一步步来解决:

1. 修复AJAX请求,传递id参数

你的main.js里的productind函数只给action.php传了getProductind:1,但没带上关键的id。你需要把当前URL里的id提取出来,或者在调用这个函数时把id传进去。

方案一:从URL中直接提取id

修改main.js的代码:

function productind(){ 
    // 从当前URL的查询参数中获取id
    const urlParams = new URLSearchParams(window.location.search);
    const photoId = urlParams.get('id');

    $.ajax({ 
        url : "action.php", 
        method: "GET", 
        // 把id参数也传进去
        data : {getProductind:1, id: photoId}, 
        success : function(data){ 
            $("#get_productind").html(data); 
        },
        error: function(xhr, status, error) {
            // 可选:加个错误提示,方便调试
            console.log("请求出错:" + error);
        }
    }) 
}

方案二:调用函数时传入id(如果是点击链接触发的话)

如果productind是在点击gallery.php的链接后触发的,你可以把id作为参数传给函数:
在gallery.php里修改链接:

<a href='product.php?id=<?php echo $photo_id; ?>' onclick='productind(<?php echo $photo_id; ?>); return false;'>Get this Product!</a>

然后修改main.js:

function productind(photoId){ 
    $.ajax({ 
        url : "action.php", 
        method: "GET", 
        data : {getProductind:1, id: photoId}, 
        success : function(data){ 
            $("#get_productind").html(data); 
        }
    }) 
}

2. 修复SQL注入风险(重要!)

你现在的代码直接把$photo_id拼进SQL语句里,这是非常危险的SQL注入漏洞。一定要改用预处理语句来避免这个问题:

修改action.php的代码:

if(isset($_GET["getProductind"])){ 
    // 先检查id是否存在且是数字(因为photo_id应该是整数类型)
    $photo_id = isset($_GET['id']) ? intval($_GET['id']) : 0; 
    if($photo_id <= 0) {
        echo "无效的产品ID";
        exit;
    }

    // 使用预处理语句,防止SQL注入
    $product_query = "SELECT * FROM photo WHERE photo_id = ?"; 
    $stmt = mysqli_prepare($conn, $product_query);
    mysqli_stmt_bind_param($stmt, "i", $photo_id); // "i"表示整数类型
    mysqli_stmt_execute($stmt);
    $run_query = mysqli_stmt_get_result($stmt);

    if(mysqli_num_rows($run_query) > 0){ 
        while($row = mysqli_fetch_array($run_query)){
            // 这里输出你的产品内容,比如:
            echo "<div>产品名称:" . htmlspecialchars($row['photo_name']) . "</div>";
            // 更多字段输出...
        }
    } else {
        echo "未找到该产品";
    }
}

3. 额外调试建议

  • 可以在action.php里先打印$_GET数组,看看是否收到了id参数:var_dump($_GET);
  • 检查浏览器的开发者工具(F12)的"网络"标签,查看AJAX请求的参数是否正确,以及服务器返回的响应内容是什么。

这样修改后,应该就能正确加载对应ID的产品内容了。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:06:48