WordPress插件SELECT查询返回空数组问题排查求助
WordPress SQL查询返回空的问题分析与解决
你的代码里**$wpdb->prepare的用法完全错误**,这是导致查询返回空的核心原因之一,同时还有其他需要排查的要点:
1. 修复prepare的写法
你现在把变量直接塞进SQL字符串里,还手动加了单引号,等于白用了prepare的参数绑定功能——既不安全,还容易因为变量解析、引号转义问题导致查询失败。正确写法应该用占位符:
global $wpdb; $table = $wpdb->prefix . 'order_codes'; // 用%s作为字符串占位符,把$order_code作为第二个参数传给prepare $sql = $wpdb->prepare("SELECT * FROM $table WHERE order_code = %s", $order_code); $order_signature = $wpdb->get_results($sql, ARRAY_A);
如果order_code是数字类型,把%s换成%d即可。
2. 其他排查要点
- 先确认
$order_code变量有没有有效值:执行var_dump($order_code);,看看是不是空字符串、null或者和数据库里的记录不匹配 - 直接在数据库里验证查询:把
$order_code的实际值代入SQL(比如SELECT * FROM wp_order_codes WHERE order_code = '你的订单码'),确认数据库里确实存在这条记录 - 检查表名是否正确:比如你的WordPress前缀如果是
wp_,表名应该是wp_order_codes,有没有拼错 - 注意大小写:Linux服务器上的MySQL默认区分字段值大小写,如果数据库里的订单码是
ABC123,但变量里是abc123,就会匹配不到
内容的提问来源于stack exchange,提问作者OHICT
相关产品推荐
相关产品推荐

