web-dev-qa-db-fra.com

Comment analyser les résultats de ligne de $ wpdb -> get_results

J'ai le suivant:

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

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

Comment obtenir les colonnes nommées 'id' et 'name' à partir de $ row?

8
redconservatory
foreach( $wpdb->get_results("SELECT * FROM your_table_name WHERE id LIKE' . $id . ';") as $key => $row) {
// each column in your row will be accessible like this
$my_column = $row->column_name;}

Plus d'infos ici

16
Pippin

À utiliser comme tableau associatif:

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

// $obj is now the selected row if a match was found

Usage

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

Pour obtenir d'autres formats, changez simplement ARRAY_A en vous basant sur la documentation de $wpdb->get_results() . La réponse de Pippin convient à la plupart des objets.

Pour utiliser une ligne en tant que tableau indexé numériquement

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

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

Pour utiliser une ligne dans un tableau dont les clés sont la clé primaire de votre base de données (souvent une colonne id). Peut-être plus efficace que la méthode de tableau associatif.

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

//Usage

$something = $obj->column_name;

//Remember you can loop over objects too
foreach($obj as $col => $val)
    echo $col . ': ' . $val . PHP_EOL;
2
Garet Claborn

Toujours essayer le Codex WordPress: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

Essentiellement, étant donné la syntaxe par défaut, la variable $ row est un objet contenant vos résultats. Vous pouvez également spécifier le type de résultat (tableau numérique, tableau associatif).

En supposant qu'un seul résultat, alors $ row-> id et $ row-> name devraient vous donner les informations.

Si vous récupérez plus d'un résultat, vous voudrez effectuer une boucle sur les entrées de l'objet.

Si vous attendez juste une ligne, essayez alors d'utiliser $ wpdb-> get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row

2
Jeff Rose

Ce code fonctionne parfaitement pour moi:

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;}    
1
Jismon Thomas