pourquoi mon instruction SQL ne renvoie aucune valeur .. est-ce faux?
<?php
global $wpdb;
$result = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->wp_frm_item_metas"));
foreach ($result as $item){
$eventname= $result->meta_value;
}
?>
<h2><?php echo $eventname;?></h2>
Ce que je fais, c’est que j’affiche les données stockées dans la base de données sous une forme formidable .. (non pro) .. Y at-il un problème avec mon code?
Je crois que pour votre fonction foreach devrait être comme ci-dessous:
foreach ($result as $item){
$eventname= $item->meta_value;
}
Il y a plusieurs problèmes avec votre code.
À moins que vous, ou un plugin, ayez ajouté wp_frm_item_metas
à $wpdb
, $wpdb
n'a aucune idée de ce que $wpdb->wp_frm_item_metas
est. Vous obtiendrez une erreur "Propriété non définie" et votre requête ne fonctionnera pas.
Vous ne pouvez pas simplement utiliser $wpdb->
plus un nom de table. Ça ne marchera pas. Vous devez ajouter la propriété à $wpdb
, ce qui n'est pas si difficile à faire .
Votre foreach
est faux. Vous êtes en boucle sur $results
, mais à chaque itération, vous devez accéder à $item
et non à $result
. Ainsi:
foreach ($result as $item){
echo $item->meta_value;
}
WHERE
- elle retournera donc toutes les lignes de la table wp_frm_item_metas
. Donc, soit vous avez besoin de ça ... foreach ($ result as $ item) {$ eventname [] = $ item-> meta_value; } ..., ce qui n'a pas de sens étant donné votre tentative de echo $eventname;
Ou votre requête et votre choix de la méthode $wpdb
sont incorrects. Il me semble que vous avez besoin de quelque chose de plus proche:
$eventname = $wpdb->get_var(
$wpdb->prepare(
"SELECT meta_value* FROM $wpdb->wp_frm_item_metas WHERE something = %s",
'something'
)
);
Vous pouvez maintenant echo $eventname
sans le souci de la boucle.
prepare
. $wpdb->prepare
doit avoir deux arguments. Votre code aurait également échoué à ce stade.Pour référence: https://codex.wordpress.org/Class_Reference/wpdb
Et veuillez activer le débogage pendant que vous travaillez. Vous auriez repéré une bonne partie de cela si vous aviez suivi cette règle simple.