Page 1 sur 1

Erreur de syntaxe

Posté : 09 avr. 2021, 18:11
par XaaE
Bonjour à tous ! Je bloque depuis pas mal de temps sur une erreur de syntaxe que je ne vois vraiment pas... Je cherche à remplir ma table équipe avec des valeurs prises aléatoirement : le nom et le contact seront pris dans un array prédéfinis, le niveau est un entier compris entre 1 et 100. Pour l'id du tournois, j'essaye de récupérer tout les id de ma table 'Tournoi', d'en faire un array et trouver un indice aléatoire compris entre 0 et (longueur de l'array -1). J'ai l'impression d'avoir tout bien fait mon la page m'affiche :

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

Voici le code :

Code : Tout sélectionner

<?php require 'header.php'; require 'BDD.php'; $nomEquipe = array('OL','AS Rome', 'OM', 'PSG', 'Monaco','MHSC', 'Lille', 'Manchester United', 'Manchester City', 'Liverpool', 'Leicester'); $lenghtNomEquipe = count($nomEquipe);//On recup la longueur du tableau $nomEquipe $contact = array('[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]'); $lenghtContact = count($contact);//On recup la longueur du tableau $contact $req_idT = $bdd->query('SELECT DISTINCT idTournoi FROM tournois');//On recupere tout les id des tournois existant dans la BDD $id_du_tournoi = $req_idT->fetchAll();//On obtient donc un array contenant les id $lenghtIdT = count($id_du_tournoi);//Longueur du tableau $id_du_tournoi echo $lenghtIdT; $req_insererEquipe = $bdd->prepare('INSERT INTO equipe(nom, niveau, contact, idT) VALUES (:nom, :niveau, :contact, :idT'); for($i = 0; $i < 10; $i++){ $idNomEquipe = rand(0, ($lenghtNomEquipe-1));//Nombre aléatoire entre 0 et la longueur du tableau --> Pour insérer un élément de manière aléatoire présent dans le tableau $nomEquipe dans la BDD $idContact = rand(0, ($lenghtContact-1));//Nombre aléatoire entre 0 et la longueur du tableau --> Pour insérer un élément de manière aléatoire présent dans le tableau $contact dans la BDD $id_for_tournoi = rand(0, ($lenghtIdT-1));//Nombre aléatoire entre 0 et la longueur du tableau --> Pour insérer un élément de manière aléatoire présent dans le tableau $id_du_tournoi dans la BDD $name = $nomEquipe[$idNomEquipe]; $niv = rand(1, 100); $contact = $contact[$idContact]; $idT = $id_du_tournoi[$id_for_tournoi]; $req_insererEquipe->execute(array( ':nom'=>$name, ':niveau'=>$niv, ':contact'=>$contact, ':idT'=>$idT["idTournoi"] )); }
Merci d'avance pour votre aide ;)

Re: Erreur de syntaxe

Posté : 09 avr. 2021, 18:39
par Maitrepylos
Pourquoi ne pas laisser directement le db faire le boulot :)

Code : Tout sélectionner

select idTournoi FROM tournois order by rand() limit 1;
Et voila un id aléatoire, sans faire des calculs et tout le tralala

Re: Erreur de syntaxe

Posté : 09 avr. 2021, 19:22
par or 1
$req_insererEquipe = $bdd->prepare('INSERT INTO equipe(nom, niveau, contact, idT) VALUES (:nom, :niveau, :contact, :idT');

il y a bien une erreur de syntaxe dans cette requête, en ne laissant que la requête, c'est encore plus visible :
INSERT INTO equipe(nom, niveau, contact, idT) VALUES (:nom, :niveau, :contact, :idT

Re: Erreur de syntaxe

Posté : 09 avr. 2021, 20:32
par XaaE
Effectivement, il manquait une parenthèse... Désolé d'avoir dérangé pour ça. Ca fonctionne comme je le veux maintenant. Par contre, Maitrepylos, je ne comprends pas comment t'as requête est censée remplacer ce que j'ai fait ? Que fais cette requête :shock: ?