データベーステーブルからデータを選択するスニペットがあります。しかし、私はエラーが発生しました:Warning: Invalid argument supplied for foreach()
私は新しいエラーが発生しました:この行のNotice: Trying to get property of non-object
echo $result->Name;
スニペット(更新):
$results = $wpdb->get_results( 'SELECT DATE_FORMAT(FROM_UNIXTIME(submit_time), "%b %e, %Y %l:%i %p") AS Submitted,
MAX(IF(field_name="Name", field_value, NULL )) AS "Name",
MAX(IF(field_name="Email", field_value, NULL )) AS "Email",
MAX(IF(field_name="Subject", field_value, NULL )) AS "Position",
MAX(IF(field_name="Message", field_value, NULL )) AS "Message"
FROM tablename
WHERE form_name = "Resume"
GROUP BY submit_time
ORDER BY submit_time DESC', ARRAY_A);
foreach($results as $result){
echo $result->Name;
}
WHERE
の前にGROUP BY
とORDER BY
を使用することはできませんあなたのクエリに問題があります
取り替える
FROM tablename GROUP BY submit_time ORDER BY submit_time DESC
と
FROM tablename
これはあなたの質問です
$results = $wpdb->get_results( 'SELECT DATE_FORMAT(FROM_UNIXTIME(submit_time), "%b %e, %Y %l:%i %p") AS Submitted,
MAX(IF(field_name="Name", field_value, NULL )) AS "Name",
MAX(IF(field_name="Email", field_value, NULL )) AS "Email",
MAX(IF(field_name="Subject", field_value, NULL )) AS "Position",
MAX(IF(field_name="Message", field_value, NULL )) AS "Message"
FROM tablename
WHERE
form_name = "Resume"
GROUP BY submit_time
ORDER BY submit_time DESC', ARRAY_A);
ワイルドスタブを取りに行くが、ARRAY_A
は連想配列を返す
それからあなたはオブジェクトとしてこの連想配列にアクセスしようとしています
簡単な変更:
foreach($results as $result){
echo $result->Name;
}
に:
foreach($results as $result){
echo $result['Name'];
}
そしてエラーは消えます!
$wpdb->get_results
は多次元配列を返します。だからforeachのための引数は次のようになります。
foreach($results as $object=>$result){
echo $result->Name;
}
アクセスする前に、必ずオブジェクトと配列をvar_dumpしてください。