Problème à la lecture d'une base de donnée
Résolu
animix
Messages postés
130
Date d'inscription
Statut
Membre
Dernière intervention
-
animix Messages postés 130 Date d'inscription Statut Membre Dernière intervention -
animix Messages postés 130 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je commence la programmation d'un site en HTML et en PHP. Mais je me retrouve face à un problème.
Voila la partie du code qui semble avoir une erreur:
Ce code n'affiche absolument rien. Mais lorsque je remplace :
par
Le code marche alors.
J'aimerais alors savoir si c'est l'emploie d'une variable après FROM qui engendre son non fonctionnement ou si non d'où peut venir le problème ?
Je commence la programmation d'un site en HTML et en PHP. Mais je me retrouve face à un problème.
Voila la partie du code qui semble avoir une erreur:
if(!isset($_GET['page'])) $_GET['page']='acceuil'; if(!isset($_GET['menu'])) $_GET['menu']='acceuil'; if(!isset($_GET['num'])) $_GET['num']='1'; $aa=$_GET['page']; $reponse = $bdd->prepare('SELECT Nom,Contenu FROM \''. $aa .'\' WHERE Nom=?'); $reponse->execute(array($_GET['menu'])); while ($donnees = $reponse->fetch()) { echo '<p class="contenu" > '.$donnees['Contenu'].'</p>'; } $reponse->closeCursor();
Ce code n'affiche absolument rien. Mais lorsque je remplace :
$reponse = $bdd->prepare('SELECT Nom,Contenu FROM \''. $aa .'\' WHERE Nom=?');
par
$reponse = $bdd->prepare('SELECT Nom,Contenu FROM acceuil WHERE Nom=?');
Le code marche alors.
J'aimerais alors savoir si c'est l'emploie d'une variable après FROM qui engendre son non fonctionnement ou si non d'où peut venir le problème ?
A voir également:
- Célia doit nettoyer le tableau ci-dessous pour l’ajouter à la base de données de son entreprise.les données sont ensuite traitées automatiquement.quelles sont les 4 cellules qui risquent de poser problème ?
- Comment nettoyer un ordinateur qui rame - Guide
- Supprimer les données de navigation - Guide
- Nettoyer son mac - Guide
- Tableau word - Guide
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif ci-dessous. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. il manque 5 valeurs dans le tableau ci-dessous. retrouvez-les dans votre tableau, puis reportez-les arrondies à l’entier le plus proche. - Guide
2 réponses
Tu as ajouté une paire de parenthèses échappées par des antislash ; pour palier à ce problème, copie la requête ci-dessous :
Par contre, je te conseil d'utiliser le marqueur « ? » pour pouvoir intégrer ta variable $aa dans ta requête :
Voilà ! Après avoir fait cette petite manipulation, ça devrait fonctionner.
$reponse = $bdd->prepare('SELECT Nom, Contenu FROM'. $aa .' WHERE Nom=?');
Par contre, je te conseil d'utiliser le marqueur « ? » pour pouvoir intégrer ta variable $aa dans ta requête :
$reponse = $bdd->prepare('SELECT Nom, Contenu FROM ? WHERE Nom=?'); $reponse -> execute(array($_GET['page'], $_GET['menu']));
Voilà ! Après avoir fait cette petite manipulation, ça devrait fonctionner.
Bonsoir
Quand tu remplace $aa par sa valeur accueil,
mais
Ce qui n'est pas du tout la même chose. Un nom de table peut être entouré d'accents graves(`) , mais pas d'apostrophes(') en mysql
Donc tu as juste à supprimer les \' en trop dans ta requête, mais tu peux très bien utiliser ta variable.
Et enfin, en PDO, ne suis pas le conseil de Alming en ce qui concerne le remplacement de ton nom de table par un ? : ça ne marche pas, l'utilisation du ? est strictement réservée au remplacement des valeurs (nombres, chaînes de caractères) mais en aucun cas utilisable pour les noms d'objets (champs ou tables)
Quand tu remplace $aa par sa valeur accueil,
$reponse = $bdd->prepare('SELECT Nom,Contenu FROM \''. $aa .'\' WHERE Nom=?');ne devient pas
$reponse = $bdd->prepare('SELECT Nom,Contenu FROM acceuil WHERE Nom=?');
mais
$reponse = $bdd->prepare('SELECT Nom,Contenu FROM 'acceuil' WHERE Nom=?');
Ce qui n'est pas du tout la même chose. Un nom de table peut être entouré d'accents graves(`) , mais pas d'apostrophes(') en mysql
Donc tu as juste à supprimer les \' en trop dans ta requête, mais tu peux très bien utiliser ta variable.
Et enfin, en PDO, ne suis pas le conseil de Alming en ce qui concerne le remplacement de ton nom de table par un ? : ça ne marche pas, l'utilisation du ? est strictement réservée au remplacement des valeurs (nombres, chaînes de caractères) mais en aucun cas utilisable pour les noms d'objets (champs ou tables)
Sinon Merci !