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

WordPress中PHP从MySQL表逐行获取优惠券代码并更新状态求助

解决MySQL优惠券获取与状态更新问题

我来帮你梳理下当前代码的问题,并给出完整的解决方案:

问题分析

你当前的实现存在两个核心问题:

  1. SQL查询没有过滤adidas分类和test=0的条件,会取出表中所有数据,完全不符合你"只展示未使用优惠券"的需求
  2. $wpdb->get_results()返回的是多条记录组成的数组,每个元素是单条数据的关联数组,直接用$kupon[adidas]根本无法正确获取优惠券代码

正确实现方案

我们需要实现"获取第一条可用优惠券→展示→标记为已使用"的完整流程,同时保证SQL操作的安全性:

1. 查询符合条件的优惠券

使用$wpdb->get_row()获取单条符合条件的记录(按优惠券代码排序,保证arda10、arda11...的顺序),同时用prepare()防止SQL注入:

// 假设你的分类字段叫kategori,优惠券代码字段叫kupon_kodu,记得替换成你表中实际字段名
$available_coupon = $wpdb->get_row(
    $wpdb->prepare(
        "SELECT * FROM `wp_kuponlar` WHERE `kategori` = %s AND `test` = %d ORDER BY `kupon_kodu` ASC LIMIT 1",
        'adidas',
        0
    ),
    ARRAY_A
);

2. 展示优惠券并更新状态

如果查询到可用优惠券,就展示它,同时立即更新test状态为1,避免重复展示:

if ($available_coupon) {
    // 输出优惠券代码
    echo $available_coupon['kupon_kodu'];

    // 更新该优惠券的状态为已使用
    $wpdb->update(
        'wp_kuponlar',
        array('test' => 1), // 要更新的字段和值
        array(
            'kategori' => 'adidas',
            'kupon_kodu' => $available_coupon['kupon_kodu']
        ), // 更新条件
        array('%d'), // 更新值的格式(%d表示整数)
        array('%s', '%s') // 条件值的格式(%s表示字符串)
    );
} else {
    // 没有可用优惠券时的提示
    echo "当前没有可用的adidas优惠券";
}

关键注意事项

  • 务必替换代码中的字段名(比如kategori、kupon_kodu)为你表中实际的字段名称
  • 始终使用$wpdb提供的安全方法(prepare()、update()),避免SQL注入风险
  • ORDER BY kupon_kodu ASC保证了优惠券按你需要的顺序被获取,如果你的排序逻辑不同,可以调整排序字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:08:46