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

MySQL匹配同表store_url与site_url相等时更新字段失败求助

问题原因

你代码中的SQL语句WHERE条件存在语法错误:你给site_url加上了单引号,会被MySQL识别为字符串常量,而非表的字段名。也就是说你当前的匹配逻辑是查找store_url等于字符串"site_url"的行,而非store_url和site_url两个字段值相等的行,这就是你每次都会错误更新固定不符合要求行的核心原因。

解决方法

直接去掉site_url外层的单引号即可,如果要更稳妥避免字段名和MySQL关键字冲突,可以用反引号包裹字段名,修正后的SQL语句如下:

$query_title_modal = "UPDATE widget_cont SET title_modal='$title_modal' WHERE store_url = site_url";

反引号包裹的稳妥写法:

$query_title_modal = "UPDATE `widget_cont` SET `title_modal`='$title_modal' WHERE `store_url` = `site_url`";

额外优化建议

  • 你当前代码中isset($title_modal)的判断完全冗余,经过mysqli_real_escape_string处理后的变量必然是存在的,可以直接删掉该层判断。
  • 更推荐使用预处理语句替代直接拼接SQL字符串,可以彻底避免SQL注入风险,完整优化后的代码示例如下:
if(isset( $_POST['title_modal']) ){
    $title_modal = $_POST['title_modal'];
    // 预处理SQL语句
    $stmt = mysqli_prepare($conn, "UPDATE widget_cont SET title_modal = ? WHERE store_url = site_url");
    // 绑定字符串类型参数
    mysqli_stmt_bind_param($stmt, "s", $title_modal);
    // 执行语句
    if(!mysqli_stmt_execute($stmt)){
        echo "ERROR: " . mysqli_stmt_error($stmt);
    }else{
        echo $title_modal;
    }
    // 释放预处理语句资源
    mysqli_stmt_close($stmt);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:15:03