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

PHP插入重复数据无法在master_toko.php展示提示消息求助

问题原因及修复方案

1. 修复 tokoCrud.php 代码错误

核心逻辑错误导致重复校验无法正常返回提示:

  • isDataTokoExist 函数执行查询后没有返回布尔结果,判断逻辑永远不生效
  • 调用isDataTokoExist时传入的$namaToko变量未定义
  • 检测到重复数据时调用runQuery传入了未定义的$query变量,会触发SQL错误
    修改后的完整代码:
<?php
include ('crudAction.php');

function insertData($db, $tableName) {
    $data = [
        'id_ot' => ' ',
        'nama_ot' => $_POST['namaToko'],
        'alamat_ot' => $_POST['alamatToko'],
        'status_ot' => '1'
    ];
    // 传入正确的参数调用校验函数
    if(!isDataTokoExist($db, $_POST['namaToko'])) {
        $query = buildInsertQuery($tableName, $data);
        return runQuery($db, $query, 'insert');
    } else {
        // 重复数据无需执行SQL,直接返回错误提示
        return [
            'error' => true,
            'message' => getMessage('dataDouble')
        ];
    }
}

function isDataTokoExist($db, $namaToko) {
    $namaToko = mysqli_real_escape_string($db, $namaToko); // 加转义防SQL注入
    $query = "SELECT * FROM master_toko WHERE nama_ot = '$namaToko'";
    $result = mysqli_query($db, $query);
    // 返回是否存在匹配数据
    return mysqli_num_rows($result) > 0;
}
?>

2. 修复 messageBox.php 样式类反转错误

当前状态判断逻辑写反,成功状态错误分配了错误类,修改后代码:

<?php
if(isset($_GET['error']) && isset($_GET['message'])) {
    $error = $_GET['error'];
    $message = urldecode($_GET['message']); // 加url解码防止特殊字符显示异常
    $messageClass = $error === 'false' ? 'success-message' : 'error-message';
?>
    <div class="message <?php echo $messageClass; ?>">
        <?php echo $message; ?>
    </div>
<?php
}
?>

3. 调整 master_toko.php 提示框位置

将提示框放在class="content"的section区块后,调整代码位置:
找到原来的代码段:

<section class="content">
<?php include 'library/services/messageBox.php'; ?>

修改为:

<section class="content">
  <div class="container-fluid">
    <!-- 原有内容保持不变 -->
  </div>
</section>
<!-- 提示框移到section闭合标签之后 -->
<?php include 'library/services/messageBox.php'; ?>

4. 可选优化:formAction.php 跳转前对message做url编码

防止消息中的特殊字符导致跳转参数异常,修改跳转代码:

if (!$result['error']) {
    header('location: ' . $_REQUEST['pageReferrer'] . '&error=false&message=' . urlencode($result['message']));
} else {
    header('location: ' . $_REQUEST['pageReferrer'] . '&error=true&message=' . urlencode($result['message']));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:27:04