PHP+MySQL按分类查询产品 硬编码正常变量传参返回空数据如何解决
问题原因
你给出的异常代码中,$name 变量被赋值为字符串 'name',而非目标查询值 'Ladies Shoe',最终拼接出的SQL语句实际查询条件为 catName = 'name',你的数据库表中不存在符合该条件的记录,因此返回的data字段为空。
另外需要注意,直接将变量拼接进SQL语句的写法存在SQL注入风险,不能在生产环境使用。
更优实现方案
推荐使用mysqli预处理语句(参数化查询)实现该功能,既可以从根源避免SQL注入漏洞,也能自动处理特殊字符转义问题,无需手动处理字符串拼接的格式问题,示例代码如下:
<?php include '../connection.php'; // 此处可替换为实际传入的分类查询参数 $targetCatName = 'Ladies Shoe'; // 预处理SQL语句,使用?作为参数占位符 $preStmt = $connect->prepare("SELECT * FROM tb_shoes WHERE catName = ?"); // 绑定参数,s标识参数为字符串类型 $preStmt->bind_param("s", $targetCatName); // 执行查询 $preStmt->execute(); // 获取查询结果集 $queryResult = $preStmt->get_result(); $returnData = []; while ($row = $queryResult->fetch_assoc()) { $returnData[] = $row; } echo json_encode([ "success" => true, "data" => $returnData ]); // 释放连接资源 $preStmt->close(); $connect->close(); ?>
内容的提问来源于stack exchange,提问作者Benkot
相关产品推荐
相关产品推荐

