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

PHP实现下拉菜单选择按商品价格排序后无法显示商品问题求助

PHP下拉菜单商品价格排序问题修复
  • 核心错误:SQL语句拼接时多了多余的英文句号,导致SQL语法错误无法查询到数据
    你原有的查询代码:
$query = query("SELECT * FROM products WHERE product_id =" . escape_string($_GET['product_id']) . ". $order_by");

拼接后生成的SQL会出现product_id = 123. ORDER BY xxx的错误格式,数据库无法执行该语句,自然没有商品返回。

修复方案

直接删除拼接部分多余的句号即可:

$query = query("SELECT * FROM products WHERE product_id =" . escape_string($_GET['product_id']) . " $order_by");

其他优化建议

  • 增加参数校验:使用$_GET参数前先判断是否存在,避免PHP抛出未定义索引警告:
// 校验商品ID参数合法性
if (!isset($_GET['product_id']) || !is_numeric($_GET['product_id'])) {
    exit('参数错误');
}
// 排序逻辑优化
$order_by = " ORDER BY product_price";
if (isset($_GET['order_by'])) {
    switch($_GET['order_by']) {
        case 'asc':
          $order_by = " ORDER BY product_price ASC";
          break;
        case 'desc':
          $order_by = " ORDER BY product_price DESC";
          break;
    }
}
  • 业务逻辑校验:当前WHERE product_id = xxx的条件只会查询到单条商品,排序逻辑没有实际作用,如果你是要做商品列表排序,请确认WHERE条件是否写错,比如应该是筛选分类ID的条件。
  • 安全优化:建议使用预处理语句执行SQL查询,替代字符串拼接的方式,彻底避免SQL注入风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:15:03