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
相关产品推荐
相关产品推荐

