$wpdb not returning data

时间:2018-04-04 作者:Bud

我觉得我的问题的答案很简单。我编写了以下代码来访问已加载到WordPress数据库中的表。我可以在phpMyAdmin中运行查询。它按预期运行。我已经尝试了我所发现的一切,试图让它发挥作用。

我的职能:

function plcoa_email_address_list () {
    global $wpdb;

    $user_count = $wpdb->get_var( "SELECT COUNT(*) FROM tblLots" );
    echo "<p>Lot count is " . $user_count . "</p>";
    $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"] . "<br>";
        }
    } else {
        echo " <br>  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个结果

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

你的问题是:

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
$result 不是mysqli_result 对象,它实际上是查询的结果。因为您从未将第二个参数传递给get_results 方法指定所需的格式"OBJECT", 因此,正确的用法是:

$results = $wpdb->get_results("SELECT * FROM tblLots" );
if ( !empty( $results ) ) {
    // output data of each row
    foreach ( $results as $row ) {
        echo $row[\'email\'];
注意,我还更正了SQL语句中的一个错误,您只要求数据库LotNum 字段,然后尝试获取需要完整数据库行的电子邮件,而您只要求一列

请注意,所有这些都在codex和官方wp上的开发中心中有详细说明。组织文档

结束

相关推荐

无法访问$wpdb,返回空

我正在使用Wordpress插件样板开发一个相当简单的插件。利用AJAX,我设置了一个基于按钮按下的操作,该操作应该从我设置的自定义数据库表中删除一个项。AJAX工作,按钮工作,对操作PHP文件的调用工作。该调用位于我的插件的admin partials文件夹中,大多数插件操作都发生在该文件夹中,看起来是这样的(“txtHint”是我使用的教程的一个工件):function ajax_function(str) { var parsed = str.slice(19); var xml