¿Por qué falla $ wpdb-get_results en ciertas tablas pero no en otras (que tienen datos)?

2

Estoy intentando extraer algunos datos personalizados de una tabla Cart66 .

Mi código funciona siempre que obtengo resultados de la tabla estándar de WP (mi matriz se llena y la letra de impresión muestra esos datos), pero no con ninguna tabla de Cart66 (imprime una matriz vacía).

Estoy absolutamente seguro de que tengo datos en estas tablas (he vuelto a verificar que estoy usando los nombres de tabla correctos unas 1,000,000 veces). He intentado dos tablas Cart66 que tienen datos en ellas.

El codex dice que la clase get_results debería funcionar con cualquier tabla, no solo con tablas estándar. Pensé que podría ser el subrayado el que estaba causando problemas, pero se supone que los guiones bajos están bien, y de hecho, las tablas WP estándar con guiones bajos funcionan bien.

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

Esto es enloquecedor! ¿Alguna idea?

¡Gracias!

    
pregunta jfacemyer 02.05.2012 - 15:22

2 respuestas

4

no tiene que volver a especificar $ wpdb en su consulta, pero asegúrese de que su tabla use el prefijo, si tiene uno. Si no lo hace, omita la parte con el prefijo. Además, siempre debe preparar primero una consulta agregada manualmente. esto debería hacerlo:

global $wpdb;
$query = $wpdb->prepare( "SELECT * FROM %s", "{$wpdb->prefix}cart66_products" );
$rawproducts = $wpdb->get_results( $query );
print_r($rawproducts);
    
respondido por el 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();

Más información sobre el manejo de errores dentro de WPDB se puede encontrar aquí en Codex .

    
respondido por el kaiser 02.05.2012 - 20:03

Lea otras preguntas en las etiquetas