Por que $ wpdb-get_results está falhando em certas tabelas, mas não em outras (que possuem dados)?

2

Estou tentando extrair alguns dados personalizados de uma tabela Cart66 .

Meu código funciona sempre que eu puxo os resultados da tabela padrão do WP (minha matriz é preenchida e a print_r mostra esses dados), mas não com qualquer tabela Cart66 (ela imprime uma matriz vazia).

Estou absolutamente certo de que tenho dados nessas tabelas (verifiquei novamente que estou usando os nomes de tabela corretos cerca de 1.000.000 de vezes). Eu tentei duas tabelas Cart66 que possuem dados nelas.

O codex diz que a classe get_results deve funcionar com qualquer tabela, não apenas com as tabelas padrão. Eu pensei que poderia ser o sublinhado que estava causando problemas, mas os sublinhados devem estar bem, e de fato, as tabelas padrão do WP com sublinhados funcionam bem.

$rawproducts = $wpdb->get_results( "SELECT * FROM $wpdb->cart66_products" );
print_r($rawproducts);

Isso é enlouquecedor! Alguma idéia?

Obrigado!

    
por jfacemyer 02.05.2012 / 15:22

2 respostas

4

você não precisa especificar o $ wpdb novamente em sua consulta, mas certifique-se de que sua tabela use o prefixo, se ele tiver um. Se isso não acontecer, pule a peça com o prefixo. Além disso, você deve sempre preparar uma consulta adicionada manualmente primeiro. isso deve ser feito:

global $wpdb;
$query = $wpdb->prepare( "SELECT * FROM %s", "{$wpdb->prefix}cart66_products" );
$rawproducts = $wpdb->get_results( $query );
print_r($rawproducts);
    
por fischi 02.05.2012 / 15:31
4
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();

Mais informações sobre o tratamento de erros dentro do WPDB podem ser encontradas aqui no Codex .

    
por kaiser 02.05.2012 / 20:03

Tags