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

10

J'ai les éléments suivants:

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

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

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

rouge conservatoire
la source

Réponses:

18
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

Pomme reinette
la source
2
Je ne sais pas si c'est la bonne façon. Je pense que l'on devrait obtenir le résultat d'une variable et utiliser foreach là-dessus, pour être sûr. Par exemple, $ results = $ wpdb-> get_results ($ sql); puis utilisez foreach ($ results as $ value).
Gogol
ne devrait pas vraiment avoir d'importance dans ce cas, car il retourne un tableau, un objet ou une valeur nulle, il ne devrait pas y avoir de risque d'obtenir une ressource "boucle inamicale". cela dit, vous voudrez peut-être les parcourir à nouveau pour autre chose, et si c'est le cas, stockez-les définitivement. ne pas interroger deux fois
Garet Claborn
2

Essayez toujours le codex WordPress: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

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

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

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

Si vous vous attendez à une seule ligne en arrière, essayez d'utiliser $ wpdb-> get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row

Jeff Rose
la source
2

Pour 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 en ARRAY_Afonction de la documentation de$wpdb->get_results() . La réponse de Pippin convient à la plupart des objets.

Pour utiliser une ligne comme 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 idcolonne). Peut-être plus efficace que la méthode du 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;
Garet Claborn
la source
1

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