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

WordPress中$wpdb->get_row返回NULL致属性获取报错求助

排查WordPress数据库查询返回NULL的问题

之前正常运行数月的代码,原本能返回食谱名称:

if ( isset( $_GET['id'] ) {                    
    $recipe_name = $wpdb->get_row("SELECT * FROM " . $table_name . " WHERE ID =".$id);                                  
    echo $recipe_name->recipe_name; 
}

现在执行时抛出错误:

Notice: Trying to get property 'recipe_name' of non-object in .... on line 48

执行var_dump ($recipe_name);返回NULL,但数据库中对应ID的数据确实存在,且recipe_name字段不为空。改成echo $recipe_name['recipe_name'];后又出现新错误:

Notice: Trying to access array offset on value of type null in.....

问题原因排查:

  • 变量未赋值:代码里直接用了$id,但没把$_GET['id']的值赋给它,导致SQL语句里的ID是未定义的空值,自然查不到数据返回NULL。
  • 语法错误:原代码的if ( isset( $_GET['id'] )少了一个闭合括号),语法错误可能导致后续逻辑执行异常。
  • SQL拼接风险与错误:直接把$id拼进SQL语句,不仅有SQL注入风险,若$_GET['id']不是纯数字,还会导致SQL语法错误,查询失败返回NULL。

修复后的代码示例:

if ( isset( $_GET['id'] ) ) { // 补全闭合括号
    $id = intval($_GET['id']); // 转成整数,避免注入和类型问题
    // 使用wpdb的prepare方法安全拼接SQL
    $recipe_name = $wpdb->get_row($wpdb->prepare(
        "SELECT recipe_name FROM %s WHERE ID = %d",
        $table_name,
        $id
    ));                                  
    // 先判断查询结果是否存在,再输出
    if ($recipe_name) {
        echo $recipe_name->recipe_name; 
    }
}

内容的提问来源于stack exchange,提问作者Thermal Mermaid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:19:53