WordPress WPDB SQL查询传字符串正常 传入变量失效问题求助
问题根源
你的查询返回空结果是两个问题导致的:
- PHP字符串拼接语法写错:你在双引号包裹的SQL语句里,错误使用了单引号字符串的拼接符
.,最终生成的SQL查询条件里,firstName的匹配值前后会多出多余的点号,和数据库里存储的真实姓名不匹配。 - 存在SQL注入风险:直接把PHP变量拼接入SQL语句不符合WordPress开发规范,特殊字符转义不当不仅会导致查询失败,还会带来安全隐患。
正确实现
使用WordPress $wpdb 类自带的prepare()方法做参数预处理,既修复语法问题,也保证查询安全:
$title = get_the_title(); // 产品搜索结果循环内获取标题 global $wpdb; // %s是字符串类型占位符,prepare方法会自动对传入的参数做安全转义 $query = $wpdb->prepare( "SELECT * FROM demos_13_amelia_users WHERE `status` = 'visible' AND `type` = 'provider' AND `firstName` = %s", $title ); $employes = $wpdb->get_results($query);
补充说明:你原代码里的
' .$title. '是单引号字符串拼接变量的写法,但你的SQL整体用双引号包裹,双引号内PHP会直接解析内嵌的变量,不需要额外用点号拼接;原写法最终生成的查询条件等价于firstName = '.实际标题值',和你直接写固定值'Perry'的条件不一致,自然无法返回正确结果。
内容的提问来源于stack exchange,提问作者Allhambra
相关产品推荐
相关产品推荐

