WordPress数据库查询无结果,无法传递数据至JavaScript求助
WordPress数据库查询无结果的问题解决
错误点1:SQL语句表名语法错误
你的SQL查询中表名的反引号使用位置错误,导致生成了无效的表名:
原代码:
$priceQuery = "SELECT `option_value` FROM {$wpdb->prefix}`options` WHERE `option_name` = 'apv_price'";
当$wpdb->prefix为wp_时,这条语句生成的表名是wp_``options,数据库无法识别这种拆分的反引号格式,自然查不到数据。
正确写法:
// 正确包裹表名 $priceQuery = "SELECT `option_value` FROM `{$wpdb->prefix}options` WHERE `option_name` = 'apv_price'"; // 或省略反引号(表名无特殊字符时可用) $priceQuery = "SELECT option_value FROM {$wpdb->prefix}options WHERE option_name = 'apv_price'";
错误点2:结果输出处理错误
$wpdb->get_results()返回的是二维数组(每个元素是包含字段的关联数组),直接用implode(",", $results)无法处理数组类型的元素,导致控制台输出空值。
如果只需要option_value的单个值,推荐使用$wpdb->get_var()直接获取单个字段:
$priceValue = $wpdb->get_var("SELECT option_value FROM {$wpdb->prefix}options WHERE option_name = 'apv_price'");
输出到控制台时,用json_encode确保格式正确:
<script> console.log("results: ", <?php echo json_encode($priceValue); ?>); </script>
更优方案:使用WordPress原生函数
WordPress内置了get_option()函数,专门用于读取wp_options表的选项值,无需手动编写SQL,更安全简洁:
$priceValue = get_option('apv_price');
同样用json_encode输出到控制台即可。
补充说明:数据库截图显示wp_options表中存在option_name为apv_price的记录,option_value有对应有效值。
内容的提问来源于stack exchange,提问作者jstrother
相关产品推荐
相关产品推荐

