Utilizarea get_results cu wpdb

19 aug. 2013, 16:10:56
Vizualizări: 175K
Voturi: 19

Încerc să preiau informații din baza de date. Am vrut să afișez toate pages folosind această instrucțiune, dar primesc un ARRAY gol

global $wpdb;
$result = $wpdb->get_results (
        "
        SELECT * 
        FROM  $wpdb->wp_posts 
        WHERE post_type =  'page'
        "
        );

echo $result; // afișează datele

Rezultat:

  ARRAY

EDITARE: După modificarea sugestiilor de mai jos, acum folosesc acest cod, dar tot nu obțin niciun rezultat:

global $wpdb;

    $posts = $wpdb->wp_posts;
    $result = $wpdb->get_results( " SELECT * FROM  $posts WHERE 'post_type' =  'page' "  );

    foreach ($result as $page) {
            echo $page->ID.'<br/>';

    }
1
Comentarii

Încearcă să înfășori $wpdb->wp_posts cu acolade, adică {$wpdb->wp_posts}..

t31os t31os
19 aug. 2013 16:40:46
Toate răspunsurile la întrebare 4
6
30
global $wpdb;

$result = $wpdb->get_results ( "
    SELECT * 
    FROM  $wpdb->posts
        WHERE post_type = 'page'
" );

foreach ( $result as $page )
{
   echo $page->ID.'<br/>';
   echo $page->post_title.'<br/>';
}
19 aug. 2013 16:24:42
Comentarii

salut @balamurugan, am încercat răspunsul tău dar tot nu primesc niciun rezultat. poți vedea partea mea [EDIT] de mai sus.

user1933824 user1933824
19 aug. 2013 16:34:03

de fapt ce primești și ai eliminat ... din codul meu. l-am testat și primesc toate ID-urile de pagină

Balas Balas
19 aug. 2013 16:45:03

folosesc partea mea [edit] așa cum se vede mai sus în postarea mea originală. am încercat echo $result doar ca să mă asigur că preiau date din query ceea ce obțin este afișarea Array. când folosesc echo $page->ID nu primesc nimic. chiar nu înțeleg de ce..

user1933824 user1933824
19 aug. 2013 16:52:36

pur și simplu copiați și lipiți acel cod complet. Asta e tot ce trebuie să faci pentru a obține rezultatul.

Balas Balas
19 aug. 2013 16:55:16

da, a funcționat! când am încercat să compar codul meu cu al tău, singura diferență pe care am observat-o este această parte $tablename = $wpdb->prefix.'posts'; această parte nu era în documentația codex. poți să-mi explici de ce funcționează?

user1933824 user1933824
19 aug. 2013 16:59:04

$wpdb->prefix = wp_ (ca în prefixul tabelei de bază de date) care va fi wp_posts în baza de date. în viitor poți să folosești numele tău ca prefix. astfel încât să nu afecteze acest tip de cod. Și încearcă să folosești întotdeauna această metodă.

Balas Balas
19 aug. 2013 17:02:39
Arată celelalte 1 comentarii
2

Aveți o ușoară neînțelegere:

Când apelați $wpdb, obțineți o listă de proprietăți care conțin numele de bază ale tabelelor:

// Prefixul personalizat din wp-config.php
// necesar doar pentru tabele personalizate
$wpdb->prefix

// Tabele unde nu aveți nevoie de prefix: cele încorporate:
$wpdb->posts
$wpdb->postmeta
$wpdb->users

Deci, interogarea dvs. finală ar arăta cam așa:

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );
19 aug. 2013 16:45:57
Comentarii

+1 pentru asta, mulțumesc. dar trebuia să dau credit persoanei care mi-a răspuns prima, el a furnizat deja răspunsul corect, pur și simplu nu am reușit să urmez instrucțiunile lui.

user1933824 user1933824
19 aug. 2013 17:02:06

Sigur. Notă laterală: După cum am menționat, $wpdb->prefix nu ar trebui folosit pentru tabelele încorporate. Apelați-le direct. Am corectat și în răspunsul lui.

kaiser kaiser
19 aug. 2013 17:08:33
0

Încearcă următorul cod. Am întâlnit o problemă similară și am rezolvat-o prin eliminarea lui $wpdb din câmpul 'FROM'.

global $wpdb;
$result = $wpdb->get_results (
            "
            SELECT * 
            FROM  wp_posts 
            WHERE post_type =  'page'
            "
            );

echo $result; // afișează datele
16 iul. 2014 03:46:41
0

Prin "Array gol" te referi la un 'array gol' sau rezultatul afișat este 'ARRAY'? Dacă este cel din urmă, atunci acesta este rezultatul așteptat. Trebuie să parcurgi acel array și să afișezi rezultatele în consecință.

Referință: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

19 aug. 2013 16:16:50