web-dev-qa-db-fra.com

$ wpdb-> get_results (...) retourne un tableau vide malgré la requête correcte

Comme le titre l'indique, je n'arrive pas à obtenir $ wpdb-> get_results pour obtenir des résultats. L'exécution de la requête "brute" est réussie, mais cela semble échouer pour une raison inconnue et étrange.

    global $wpdb;


    $sql = "SELECT *
            FROM something aki, 
                 somethingelse akb, 
                 somethingelseelse ac 
            WHERE aki.keyID = akb.keyID 
              AND akb.someID = ac.someID 
              AND aki.type LIKE '%thing%'";

    $corps = $wpdb->get_results($sql, OBJECT);

    var_dump($corps);
6
1Up

Utilisez $wpdb->show_errors( true ) avant la requête et voyez quelle erreur revient.

Mon problème (parce que j'ai connu la même chose) est que je devrais utiliser $wpdb->posts au lieu de wp_posts dans la requête. Le préfixe des tables peut changer de WP installation à installation ou même dans la même installation en fonction du temps (par exemple, un administrateur peut changer le préfixe quand il le souhaite). Donc, on devrait écrire la requête comme ça:

$query = "select <stuff here> from $wpdb->posts where <stuff here>";
2
NoOne

Peut-être un peu tard, mais il vous manque l'appel de "préparer" nécessaire dans wordpress:

$Table_Name    = $wpdb->prefix.'Your Table Name';
$sql_query     = $wpdb->prepare("SELECT * FROM $Table_Name WHERE aki.keyID=%d AND akb.someID=%d AND aki.type like %s", akb.keyID, ac.someID, ''%thing%');
$result        = $wpdb->query( $sql_query ); 

Plusieurs résultats peuvent être trouvés dans le tableau.

1
Debbie Kurth