为什么$wpdb->GET_RESULTS在某些表上失败,而在其他表(有数据)上没有失败?

时间:2012-05-02 作者:jfacemyer

我正在尝试从Cart66 桌子

每当我从中的标准WP表中提取结果时(我的数组被填充,print\\r显示该数据),我的代码都会工作,但不会与任何Cart66表一起工作(它打印一个空数组)。

我绝对肯定这些表中有数据(我已经重新检查了大约1000000次使用正确的表名)。我尝试了两个Cart66表,其中包含数据。

这个codex 表示get_results类应该处理任何表,而不仅仅是标准表。我想可能是下划线引起了麻烦,但下划线应该是好的,事实上,带有下划线的标准WP表工作正常。

$rawproducts = $wpdb->get_results( "SELECT * FROM $wpdb->cart66_products" );
print_r($rawproducts);
这真让人发疯!有什么想法吗?

谢谢

3 个回复
最合适的回答,由SO网友:fischi 整理而成

您不必在查询中再次指定$wpdb,但请确保表使用前缀(如果有前缀的话)。如果没有,请跳过带有前缀的部分。此外,您应该始终首先准备手动添加的查询。这应该可以做到:

global $wpdb;
$query = $wpdb->prepare( "SELECT * FROM %s", "{$wpdb->prefix}cart66_products" );
$rawproducts = $wpdb->get_results( $query );
print_r($rawproducts);

SO网友:kaiser
global $wpdb;
$query = $wpdb->prepare( 
    "
        SELECT * FROM %s
    ",
    "{$wpdb->prefix}cart66_products" 
);
$results = $wpdb->get_results( $query );

$wpdb->show_errors();
echo \'<pre>\';
    // Show results
    echo "<hr />Results:\\n";
    print_r( $results );

    // Show errors
    echo "<hr />Errors:\\n";
    if ( current_user_can( \'manage_options\' ) AND defined( \'WP_DEBUG\' ) AND WP_DEBUG AND defined( \'WP_DEBUG_DISPLAY\' ) AND WP_DEBUG_DISPLAY )
    {
        $wpdb->print_error();
    }
echo \'</pre>\';

// Savely remove errors for guest or non admins
$wpdb->hide_errors();

More info about error handling inside WPDB can be found here in Codex.

SO网友:Mr Lee
<?php
global $wpdb;
$table_name = $wpdb->prefix . \'cart66_products\';
$i = 0;
$obj = [];

$query = $wpdb->prepare(
    "SELECT * FROM $table_name"
);

$result = $wpdb->get_results(
    $query
);
$wpdb->show_errors();
foreach ($result as $row) {
    $obj[$i] = $row;
    $i++;  
}
    echo \'<pre>\';
    echo "<hr />Results:\\n";
    echo json_encode($obj);
?>
结束

相关推荐

Corrupt Wordpress Database

我认为这是最奇怪的文字印刷问题。一个拥有大量帖子数据库的客户网站已经有了自己的想法。前一分钟一切似乎都很好,接下来的帖子、类别和标签都不见了。此时仪表板告诉我9个类别中有2309个帖子,但当我单击admin中的categories链接时,列表中没有任何帖子。我可以在admin中看到所有帖子,但尽管它们过去被分配到类别并列出标签,但现在它们都“未分类”,没有标签。很明显,wordpress数据库在某种程度上已经损坏,但从哪里开始尝试修复呢!?以下是我迄今为止测试的内容:插件–我关闭了所有当前的插件。主题–我