Bonjour,
Voila je rencontre un petit problème avec mon code.
Je veux extraire les données de ma table
$req = $bdd->prepare('SELECT * FROM date_picker ORDER BY date_picker DESC LIMIT 10');
while ($donnees = $req->fetch()){
echo $donnees['date_picker'];
}
Extraire les données de mon champ date_picker qui se trouve dans ma table date_picker
J'obtiens une page blanche alors que ma requête saisie dans phpmyadmin me renvoie bien les résultats. Je vous remercie de votre aide.
Salut,
Pourquoi faire une requête préparée si tu n'as pas de data conditionnelles à y injecter ? Sais-tu au moins ce que tu fais ?
Dans ton cas, la méthode query de l'objet PDO suffirait.
$q = "SELECT * FROM date_picker ORDER BY date_picker DESC LIMIT 10";
$rows = $bdd->query($q);
foreach ($rows as $row) {
// ton traitement sur tes data ici
}
Soit tu fais un execute soit tu utilise la méthode de @betaweb avec query mais qu'il le dit, tu sais ce que tu tape ou copie / colle ?
J'ai donc regardé sur les forums et j'ai vu que prepare permettait de lutter contre les injections SQL alors j'ai fais comme ça:
$req = $bdd->prepare('SELECT * FROM date_picker WHERE date_picker = :date_picker ORDER BY date_picker DESC LIMIT 10');
$req->execute(array('date_picker' => $_GET['date_picker']));
ça fonctionne bien si la valeur existe bien dans l'URL mais sans passer par l'URL comment je dois faire car avec query ça fonctionne bien mais si c'est pas sécurisé autant faire du premier coup la bonne méthode. (juste le chevron supérieur qui ne passe pas au dessus > > )
Il ne faut pas mettre ton Get directement en fait :
// pour la version sans paramètre à passer :
$req = $bdd->query('SELECT * FROM date_picker ORDER BY date_picker DESC LIMIT 0, 10');
// Avec des paramètres :
$datePicker = (empty($_GET['date_picker'])) ? 'valeur par défaut' : $_GET['date_picker'];
$req = $bdd->prepare('SELECT * FROM date_picker WHERE date_picker = :date_picker ORDER BY date_picker DESC LIMIT 0, 10');
$req->execute([
'date_picker' => $datePicker
]);
Cela permet de vérifier un minimum ce que tu reçoit car sinon PHP te mets un notice si la case n'existe pas