Cum să parsezi rezultatele rândurilor din $wpdb -> get_results

20 iul. 2011, 00:42:35
Vizualizări: 128K
Voturi: 15

Am următorul cod:

$query = 'SELECT * FROM wp_pod_tbl_add_questions WHERE id LIKE '. $id;

                                        $row = $wpdb -> get_results($query);

Cum pot obține coloanele numite 'id' și 'name' din $row?

0
Toate răspunsurile la întrebare 4
2
22
foreach( $wpdb->get_results("SELECT * FROM numele_tabelului_tau WHERE id LIKE' . $id . ';") as $cheie => $rand) {
// fiecare coloană din rând va fi accesibilă astfel
$coloana_mea = $rand->nume_coloana;}

Mai multe informații aici

20 iul. 2011 02:20:01
Comentarii

nu sunt sigur dacă aceasta este cea mai bună abordare. Cred că ar fi mai bine să stochezi rezultatul într-o variabilă și să folosești foreach pe aceasta, pentru a fi în siguranță. De exemplu: $results = $wpdb->get_results($sql); apoi folosești foreach($results as $value).

Gogol Gogol
13 sept. 2013 14:15:57

nu ar trebui să conteze în acest caz, deoarece returnează array, obiect sau null, nu ar trebui să existe riscul de a obține o resursă care nu poate fi parcursă. totuși, dacă ai nevoie să parcurgi rezultatele din nou pentru altceva, atunci cu siguranță ar trebui să le stochezi. nu face query de două ori

That Realtor Programmer Guy That Realtor Programmer Guy
30 oct. 2017 00:18:10
0

Pentru a utiliza ca un array asociativ:

$obj=[];
$rows =  $wpdb->get_results( 'SELECT * FROM `tbl_name` WHERE `id` = '.$obj_id , ARRAY_A);
foreach($rows as $row){  $obj=$row; break; }

// $obj este acum rândul selectat dacă a fost găsită o potrivire

Utilizare

$something = $obj['column_name'];
foreach($obj as $col => $val)
    echo $col . ': ' . $val . PHP_EOL . '<br />';

Pentru a obține alte formate, schimbați pur și simplu ARRAY_A conform documentației pentru $wpdb->get_results(). Răspunsul lui Pippin este potrivit pentru majoritatea utilizărilor cu obiecte.

Pentru a utiliza un rând ca un array indexat numeric

$rows =  $wpdb->get_results( 'SELECT * FROM `tbl_name` WHERE `id` = '.$obj_id , ARRAY_N);
foreach($rows as $row){  $obj=$row; break; }

//Utilizare
foreach($obj as $col_value) echo $col_value . ' ';

Pentru a utiliza un rând într-un array ale cărui chei sunt cheia primară din baza de date (adesea o coloană id). Poate fi mai eficient decât metoda array-ului asociativ.

$rows =  $wpdb->get_results( 'SELECT * FROM `tbl_name` WHERE `id` = '.$obj_id ,  OBJECT_K);
$obj = $rows[ $obj_id ];

//Utilizare

$something = $obj->column_name;

//Țineți minte că puteți itera și prin obiecte
foreach($obj as $col => $val)
    echo $col . ': ' . $val . PHP_EOL;
31 oct. 2017 01:47:50
0

Acest cod funcționează perfect pentru mine:

global $wpdb;
$table_name = "my_table_name";
$myrows = $wpdb->get_results( "SELECT `id`, `name` FROM ".$table_name);
    foreach ($myrows as $details) {
      echo $details->id;
      echo $details->name;}    
15 mar. 2018 18:52:59
0

Încearcă întotdeauna WordPress Codex: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

În esență, având în vedere sintaxa implicită, variabila $row aici este un obiect care conține rezultatele tale. Alternativ, poți specifica TIPUL de rezultat (matrice numerică, matrice asociativă).

Presupunând că ai doar un rezultat, atunci $row->id și $row->name ar trebui să-ți ofere informația.

Dacă obții mai multe rezultate, ar trebui să parcurgi intrările din obiect.

Dacă te aștepți să obții doar un singur rând, încearcă să folosești $wpdb->get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row

20 iul. 2011 01:07:48