J'ai un extrait qui va sélectionner une donnée de la table de base de données. Mais je rencontre une erreur: Warning: Invalid argument supplied for foreach()
Je rencontre une nouvelle erreur: Notice: Trying to get property of non-object
dans cette ligne echo $result->Name;
Extrait (mis à jour):
$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;
}
Vous avez un problème avec votre requête qui vous empêche d'utiliser GROUP BY
et ORDER BY
avant WHERE
remplacer
FROM tablename GROUP BY submit_time ORDER BY submit_time DESC
avec
FROM tablename
Ceci est votre requête
$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);
Va prendre un coup de poignard sauvage, mais ARRAY_A
retournera un tableau associatif
Vous essayez ensuite d'accéder à ce tableau associatif en tant qu'objet
Changement simple:
foreach($results as $result){
echo $result->Name;
}
À:
foreach($results as $result){
echo $result['Name'];
}
et l'erreur devrait disparaître!
$wpdb->get_results
renvoie un tableau multidimensionnel. Donc, l'argument pour le foreach devrait être:
foreach($results as $object=>$result){
echo $result->Name;
}
Var_dump toujours vos objets et tableaux avant d'y accéder.