其他两种判断 识别不出来,请那位大佬帮我修改一下,万分感谢!
Filter=name字段
ParentId=code字段
Rank=rank字段
下面是客户端传出来的json参数
现在是三种情况要判断
第一种:
{
"Filter" : null,
"ParentId" : "",
"Rank" : 1
}
仅查询rank=$rank
{
"Filter" : null,
"ParentId" : "B",
"Rank" : 2
}
查询code=$ParentId且rank=$rank的数值
{
"Filter" : "A1",
"ParentId" : "",
"Rank" : 1
}
查询name=包含$Filter开头的数据
[PHP] 纯文本查看 复制代码setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("数据库连接失败: " . $e->getMessage());
}
// 读取JSON数据
$jsonData = file_get_contents('php://input');
$data = json_decode($jsonData, true);
// 初始化查询条件数组
$conditions = [];
$queryParams = [];
// 根据传入的JSON数据构建查询条件
if (isset($data['Rank']) && $data['Rank'] !== "") {
$conditions[] = "rank = ?";
$queryParams[] = intval($data['Rank']); // 转换为整数
}
if (isset($data['ParentId']) && $data['ParentId'] !== "") {
$conditions[] = "code = ?";
$queryParams[] = trim($data['ParentId']); // 去除空格
}
if (isset($data['Filter']) && $data['Filter'] !== null) {
$conditions[] = "name LIKE ?";
$queryParams[] = "%" . trim($data['Filter']) . "%"; // 去除空格并添加通配符
}
// 构建完整的查询语句
$where = empty($conditions) ? '1=1' : implode(' AND ', $conditions);
$query = "SELECT code, name, rank FROM tushufenlei WHERE $where";
try {
$stmt = $conn->prepare($query);
$stmt->execute($queryParams);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
die("查询执行失败: " . $e->getMessage());
}
// 格式化查询结果为期望的JSON结构
$response = [
"Code" => null,
"Data" => $results, // 直接使用查询结果作为Data的值
"ErrorMessageList" => [], // 空数组,或者可以根据需要填充错误信息
"Ext" => null, // 可以根据需要设置为其他值
"IsSuccess" => true, // 假设查询总是成功的,或者可以根据实际情况设置
"LastUpdateReaderTime" => "2024-06-08T12:17:09.3014873+08:00", // 示例时间戳,应替换为动态生成的时间
"Message" => "", // 空字符串,或者可以根据需要填充消息内容
"ServerTime" => "2024-06-08T12:17:09.3014873+08:00" // 示例时间戳,应替换为动态生成的时间
];
// 遍历查询结果数组并去除每个字段中的空格
foreach ($response['Data'] as &$row) {
$row = array_map('trim', $row);
}
// 输出JSON响应
header('Content-Type: application/json');
echo json_encode($response, JSON_UNESCAPED_UNICODE);
// 关闭数据库连接
$conn = null;