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

如何修改PHP函数,基于所有唯一CR编号获取对应数据库字段数据

问题分析与修改方案

1. 修复调试输出的语法错误

原代码中Line A和Line Y的echo语句存在语法问题,导致print_r无法正确执行,甚至可能触发PHP语法报错中断后续代码运行。

错误写法:

echo "<pre>; print_r($distinctCRNumbers); echo </pre>;  // Line A

修正后:

echo "<pre>";
print_r($distinctCRNumbers);
echo "</pre>"; // Line A

Line Y的调试代码做同样修改即可。

2. 改用参数化查询避免字符串拼接问题

直接将$crNumber拼接到SQL语句中,不仅有SQL注入风险,还可能因字符匹配问题导致部分CR编号查询失效。参数化查询能确保每个CR编号都被正确解析:

修改循环内的查询逻辑:

foreach ($distinctCRNumbers as $crNumber) {
    $query = "
    SELECT
        NEW_COLUMN_1,
        NEW_COLUMN_2
    FROM
        your_table_name
    WHERE
        NUMBER = ?";

    // 参数化执行查询(适配多数数据库抽象层)
    $stmt = $database->prepare($query);
    $stmt->execute([$crNumber]);

    // 获取查询结果
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    // ... 后续赋值逻辑
}

注:如果你的$database对象使用的是自定义封装类,可调整为对应参数化语法,核心是避免直接字符串拼接变量。

3. 可选:保留无结果的CR编号记录

如果需要输出中包含所有传入的CR编号(即使数据库无对应记录),可以去掉if ($row)的判断,改为默认值填充:

$filePaths[$crNumber] = [
    'NEW_COLUMN_1' => $row['NEW_COLUMN_1'] ?? null,
    'NEW_COLUMN_2' => $row['NEW_COLUMN_2'] ?? null
];

4. 验证数据库记录有效性

确认数据库表your_table_name中确实存在NUMBER为GOOD-MORNING的记录,可直接在数据库客户端执行SQL验证:

SELECT NEW_COLUMN_1, NEW_COLUMN_2 FROM your_table_name WHERE NUMBER = 'GOOD-MORNING';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:42:02