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

WordPress开发报错:Warning: Undefined property: wpdb::$questions

问题解决:Undefined property: wpdb::$questions

错误原因分析

这个警告由代码里的几个关键问题导致:

  • SQL语句中表名拼接错误,. $table_name . 的写法会引发SQL解析异常,WordPress的wpdb类因此误判你要访问它的$questions属性
  • SQL里使用了表别名q,但没有给questions表定义该别名
  • SELECT语句仅查询了uniq_name和short_question,但循环中却尝试访问$details->id,这还会触发额外的未定义属性错误
  • 代码结构混乱:foreach循环内重复输出table标签,且存在多余的闭合大括号

修正后的代码

// Show the open questions
echo '<div style="overflow-x: auto;">';
echo "<br>Open Vragen<br>";
global $wpdb;
$table_name = $wpdb->prefix . "questions"; // 加上WordPress表前缀,避免表名冲突
// 修正SQL语句,定义表别名,查询需要的字段
$myrows = $wpdb->get_results( "SELECT `id`, `uniq_name`, `short_question` FROM `$table_name` AS q WHERE q.status = 'open' ORDER BY q.id DESC" );

// 先输出表格头部,再循环填充内容
echo "<table><TR><TH>Vragen&nbsp;</TH><TH>Beantwoord&nbsp;</TH><TH>Niet Beantwoord&nbsp;</TH></TR>";
foreach ($myrows as $details) {
    echo "<TR>";
    echo "<TD>" . $details->id . "</TD>";
    echo "<TD>" . $details->short_question . "</TD>";
    // 根据实际需求补充其他列内容
    echo "<TD></TD>";
    echo "</TR>";
}
echo "</table>";
echo '</div>';

关键修正点

  • 表名规范:用$wpdb->prefix拼接自定义表名,符合WordPress开发规范,同时用反引号包裹表名避免语法错误
  • SQL语句:给表添加别名AS q,保证WHERE和ORDER BY中的别名引用有效
  • 字段补全:在SELECT中加入id字段,匹配循环里要访问的$details->id
  • 结构优化:将table标签和表头移到循环外,避免重复创建表格,同时清理多余的闭合括号

内容的提问来源于stack exchange,提问作者Shady Morsi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:42:09