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

如何通过MySQL查询生成带选中状态的复选框并跳过指定列?

实现方案:基于双查询生成带选中状态的复选框

完全可以实现你的需求,下面是修正后的代码,解决了原代码中的逻辑错误、语法问题以及SQL注入风险:

<?php
// 数据库连接
$conc = new mysqli("127.0.0.1:3306", "root", "", "mydb");
if ($conc->connect_error) {
    die("连接失败: " . $conc->connect_error);
}

// 查询1:获取表的所有列信息
$columnsResult = $conc->query("SHOW COLUMNS FROM matmemmatrix");
$columns = [];
while ($col = $columnsResult->fetch_assoc()) {
    $columns[] = $col['Field'];
}

// 跳过前3列
$columnsToDisplay = array_slice($columns, 3);

// 查询2:获取目标行的数据,使用预处理语句防止SQL注入
$stmt = $conc->prepare("SELECT * FROM matmemmatrix WHERE memid1 = ? AND memlocid = ?");
$stmt->bind_param("ss", $uid, $newloc); // 若$uid/$newloc是数字类型,可改为"ii"
$stmt->execute();
$rowData = $stmt->get_result()->fetch_assoc(); // 将目标行转为关联数组,直接通过列名取值

// 生成HTML结构
echo "<html><body><table>";

$columnCount = 0;
$columnsPerRow = 5; // 每行显示5个复选框,可按需调整

foreach ($columnsToDisplay as $colName) {
    // 每行起始标记
    if ($columnCount % $columnsPerRow === 0) {
        echo "<tr>";
    }

    // 判断复选框选中状态:目标行存在且列值为1则选中
    $checked = (!empty($rowData) && $rowData[$colName] == 1) ? 'checked' : '';

    echo "<td>";
    echo '<input type="checkbox" 
               value="' . htmlspecialchars($colName) . '" 
               id="' . htmlspecialchars($colName) . '" 
               name="mat[]" 
               ' . $checked . '>';
    echo '<label for="' . htmlspecialchars($colName) . '">' . htmlspecialchars($colName) . '</label>';
    echo "</td>";

    // 每行结束标记
    if (($columnCount + 1) % $columnsPerRow === 0) {
        echo "</tr>";
    }

    $columnCount++;
}

// 补全最后一行的闭合标签
if ($columnCount % $columnsPerRow !== 0) {
    echo "</tr>";
}

echo "</table></body></html>";

// 清理资源
$stmt->close();
$conc->close();
?>

关键修复说明

  • 安全优化:使用预处理语句替代直接拼接变量,彻底避免SQL注入风险。
  • 列处理逻辑:先将所有列存入数组,再通过array_slice跳过前3列,逻辑更直观。
  • 数据取值:将目标行转为关联数组后,可直接通过列名获取对应值,简化选中状态判断。
  • 布局修复:重构了表格行的生成逻辑,解决原代码中$i变量的语法和逻辑错误。
  • 调试友好:增加数据库连接错误判断,便于排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:24:55