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

WordPress使用Woody代码片段插件调用数据库出现警告问题求助

解决WordPress中Woody代码片段插件执行数据库查询时的mysqli警告问题

你遇到的核心问题是WordPress的执行作用域和纯PHP环境存在差异:虽然你在代码开头定义了$conn,还在函数里用了global $conn,但Woody插件会把你的代码包裹在局部作用域中执行,导致$conn并没有真正成为全局变量,函数里的$conn实际是null,这才触发了那些警告。

下面给你两种解决方案,优先推荐第一种(符合WordPress官方规范):

方案一:使用WordPress内置的$wpdb类(推荐)

WordPress自带了专门的数据库操作类$wpdb,它已经帮你处理了数据库连接、安全防护和环境兼容问题,完全不需要手动连接数据库。如果你的products表属于WordPress数据库的一部分,用这个方法最稳妥:

function getPosts() {
    // 引入WordPress内置的数据库全局对象
    global $wpdb;
    
    // 注意:如果你的表是WordPress数据库的一部分,记得加上表前缀(默认是wp_)
    // 若为独立外部数据库,可跳过前缀直接写表名
    $products = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}products");
    
    $counter = 1;
    foreach ($products as $product) {
        $pro_title = $product->product_title;
        echo "<b>$counter. $pro_title</b><br>";
        $counter++;
    }
}
getPosts();

方案二:修复当前的全局变量问题(应急可用,不推荐)

如果你的products表是独立的外部数据库,必须手动连接的话,把连接逻辑放到函数内部,避免依赖全局变量的作用域问题,同时加上错误处理方便调试:

function getPosts() {
    // 直接在函数内部建立数据库连接
    $conn = mysqli_connect("localhost", "root", "", "myshop");
    
    // 先检查连接是否成功
    if (!$conn) {
        echo "数据库连接失败: " . mysqli_connect_error();
        return;
    }
    
    $get_products = "SELECT * FROM products";
    $run_products = mysqli_query($conn, $get_products);
    
    // 检查查询是否成功
    if (!$run_products) {
        echo "查询执行失败: " . mysqli_error($conn);
        mysqli_close($conn);
        return;
    }
    
    $counter = 1;
    while ($row_products = mysqli_fetch_array($run_products)) {
        $pro_title = $row_products['product_title'];
        echo "<b>$counter. $pro_title</b><br>";
        $counter++;
    }
    
    // 记得关闭数据库连接
    mysqli_close($conn);
}
getPosts();

为什么本地纯PHP环境没问题?

在纯PHP脚本里,你定义的$conn是全局变量,函数里用global $conn就能直接访问到;但WordPress的插件代码会被包裹在插件的执行函数中,你的$conn实际是局部变量,global $conn自然找不到它,所以才出现了null相关的警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:30:15