Petit souci de requete

Fermé
David987 Messages postés 120 Date d'inscription samedi 19 décembre 2015 Statut Membre Dernière intervention 16 octobre 2022 - 3 sept. 2017 à 14:22
jordane45 Messages postés 38288 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 novembre 2024 - 3 sept. 2017 à 18:19
Bonjour,

J'ai un petit souci au niveau de requête, en faite lorsque j'execute mon code en ligne ça me met cette erreur :

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. in /storage/ssd4/059/2781059/public_html/interview.php:37 Stack trace: #0 /storage/ssd4/059/2781059/public_html/interview.php(37): PDO->query('SELECT * FROM I...') #1 {main} thrown in /storage/ssd4/059/2781059/public_html/interview.php on line 37

Voici à quoi ça correspond :

<?php
include ('bdd.php'); //inclusion du fichier de connexion bdd
$select_nom = $bdd->query("SELECT * FROM Interview");
	while($titre = $select_nom->fetch())
		{
			$select_nom->closeCursor();
?>
			<div class="insetboxlarge">
			<h3><?php echo $titre['titre_interview'];?></h3>
<?php
			$select_num = $bdd->exec("SELECT num_interview FROM Interview WHERE titre_interview = '".$titre['titre_interview']."'");
			$sql = $bdd->query("SELECT * FROM Interview WHERE num_interview = '".$select_num."'"); //selection des interview
			//boucle pour affichage de chaque interview
			while($don = $sql->fetch())
				{
?>
					<div style="color:blue;"><li><?php echo $don['journaliste'];?> </li></div>
					<?php echo $don['text_journaliste'];?> 
					<div style="color:purple;"><li><?php echo $don['interviewer'];?> </li></div>
					<?php echo $don['text_interviewer'];
				}
?>
</div>
<?php
		}
?>


Je précise que je n'est pas d'autre requete ailleurs qu'ici.
Si quelqu'un à une idée, je suis preneur car, je cale.

Merci par avance à vous tous.

2 réponses

jordane45 Messages postés 38288 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 novembre 2024 4 703
3 sept. 2017 à 17:44
Bonjour,

Déjà..; avant de continuer ton code... je t'invite très fortement à te mettre à gérer correctement les erreurs PDO.
Pour cela, applique ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
(NB: Il faut également placer les requêtes dans des blocs TRY/CATCH .. pas seulement la connexion.)

Ensuite.... que cherches tu à faire exactement ??
Je vois que tu fais des requêtes dans des boucles.......... grosse erreur !
En plus tu fais un close_sursor dès le début de ta boucle... donc forcément..ça ne marche pas...
Mais de toutes façons.. pour coder de manière optimum il vaut mieux éviter.

Bref.... Tu utilises visiblement deux tables :
Interview et num_interview ...
le lien entre les deux étant le champ num_interview

Il est alors préférable de ne faire qu'une seule requête en utilisant les JOINTURES.
Par exemple... regarde ce que te retourne la requête suivante :
SELECT *
FROM Interview I
LEFT JOIN  num_interview N ON N.num_interview = I.num_interview


NB: Pour voir ce que donne une requête... il faut la tester DIRECTEMENT dans ta bdd via phpmyadmin par exemple et non dans le code PHP !

NB² : Tu pourras ensuite regarder à quoi sert (et comment utiliser...) la méthode fetchAll ...
Il ne te restera plus qu'à boucler sur l'array (issu du fetchAll) pour réaliser l'affichage de ton choix.


Reviens nous voir lorsque tu auras apportés TOUTES ces modifications. On verra ensuite pour t'aider à avancer si tu bloques toujours.


0
David987 Messages postés 120 Date d'inscription samedi 19 décembre 2015 Statut Membre Dernière intervention 16 octobre 2022 1
3 sept. 2017 à 18:01
Ce que je veux c'est afficher les élements de ma table Interview en fonction d'un champs en gros :

Afficher interview par interview.
Si tu as une piste je suis preneur.

PS : j'ai corrigé pour le traitement des erreurs php.
0
jordane45 Messages postés 38288 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 novembre 2024 4 703
3 sept. 2017 à 18:19
Une piste ?? ... ben .. oui... ce que je t'ai donné !
Une fois toutes les données récupérées grâce à la requête ..puis un fetchAll.. il suffit de travailler l'affichage !
Quand tu en seras là, vient nous poster ton "nouveau" code en indiquant sur quoi tu bloques exactement et en précisant ce que tu auras essayé.
Pour l'instant j'ai l'impression que tu attends que je te donne un code tout fait.... si c'est le cas c'est que tu n'as pas compris l’esprit de ce forum .....
0