なぜ私のSQL文は値を返さないのですか..これは間違っていますか?
<?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>
私がやっていることは、私は手ごわいフォームを使用してデータベースに格納されているデータを表示しています。
あなたのforeach機能は以下のようになるべきだと思います。
foreach ($result as $item){
$eventname= $item->meta_value;
}
あなたのコードにはいくつかの問題があります。
あなたまたはプラグインがwp_frm_item_metas
に$wpdb
を追加していない限り、$wpdb
は$wpdb->wp_frm_item_metas
が何であるかを認識していません。あなたは "未定義のプロパティ"エラーが発生し、あなたのクエリは機能しません。
$wpdb->
と任意のテーブル名を使用することはできません。それはうまくいきません。プロパティを$wpdb
に追加する必要があります。 それほど難しいことではありません 。
あなたのforeach
は間違っています。あなたは$results
をループしていますが、繰り返しのたびに$item
ではなく$result
にアクセスする必要があります。そのようです:
foreach ($result as $item){
echo $item->meta_value;
}
WHERE
句は含まれていないため、wp_frm_item_metas
テーブルのすべての行が返されます。だから、どちらも必要です... foreach($ result as $ item){$ eventname [] = $ item-> meta_value; echo $eventname;
を使おうとした場合、これは意味がありません。あるいは、クエリと$wpdb
メソッドの選択の両方が間違っています。これに近いものが必要なようです。
$eventname = $wpdb->get_var(
$wpdb->prepare(
"SELECT meta_value* FROM $wpdb->wp_frm_item_metas WHERE something = %s",
'something'
)
);
ループを気にせずにecho $eventname
を実行できます。
prepare
メソッド呼び出しをどのように変更したかに注目してください。 $wpdb->prepare
には2つの引数が必要です。あなたのコードもその時点で失敗したでしょう。参考のために: https://codex.wordpress.org/Class_Reference/wpdb
そして作業中に デバッグを有効にしてください 。あなたがその単純な規則に従えば、あなたはこれの多くを発見したでしょう。