首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$wpdb不返回数据

$wpdb不返回数据
EN

WordPress Development用户
提问于 2018-04-04 22:42:28
回答 1查看 1.1K关注 0票数 2

我觉得我的问题的答案将是非常简单的。我编写了以下代码来访问加载到我的WordPress数据库中的表。我可以在phpMyAdmin中运行查询。它按预期运行。为了让它发挥作用,我尝试了我发现的每一件事。

我的职能:

代码语言:javascript
复制
function plcoa_email_address_list () {
    global $wpdb;

    $user_count = $wpdb->get_var( "SELECT COUNT(*) FROM tblLots" );
    echo "Lot count is " . $user_count . "";
    $wpdb->show_errors( true );
    $result = $wpdb->get_results($wpdb->prepare("SELECT LotNum FROM tblLots;" ));
    $wpdb->print_error();
    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo $row["email"] . "
";
        }
    } else {
        echo " 
  0 results";
    }
}  
function plcoa_short_code( $atts=null, $content=null ){
    extract(shortcode_atts(array('id'=>''),$atts));
    plcoa_email_address_list ();
}
add_shortcode('listemails','plcoa_short_code');

我得到的结果是:

抽签计数为369 WordPress数据库错误:[]从tblLots中选择LotNum;0

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2018-04-04 23:12:10

你的问题是:

代码语言:javascript
复制
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {

$result不是mysqli_result对象,它实际上是查询的结果。由于您从未向get_results方法传递第二个参数,以指定希望它们采用何种格式,因此它将假定为"OBJECT",因此正确的用法是:

代码语言:javascript
复制
$results = $wpdb->get_results("SELECT * FROM tblLots" );
if ( !empty( $results ) ) {
    // output data of each row
    foreach ( $results as $row ) {
        echo $row['email'];

注意,我还更正了SQL语句中的一个错误,您只向数据库询问了LotNum字段,然后尝试抓取期望数据库行完整的电子邮件,而您只要求一个列。

还请注意,所有这些都在代码法典和dev集线器中以及官方的wp.org文档中详细说明。

票数 2
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/299852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档