Problème execute mysql
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, sa me fait dit comme erreur :
Fatal error: Uncaught Error: Call to a member function execute() on string in D:\Programmes\wampserver\www\index.php on line 20
Error: Call to a member function execute() on string in D:\Programmes\wampserver\www\index.php on line 20
Et le code de la ligne 19 et 20 :
Merci pour vos réponses.
Fatal error: Uncaught Error: Call to a member function execute() on string in D:\Programmes\wampserver\www\index.php on line 20
Error: Call to a member function execute() on string in D:\Programmes\wampserver\www\index.php on line 20
Et le code de la ligne 19 et 20 :
$insert_partie = ('INSERT INTO '.$dossier.'(nompartie, nombre) VALUES(?, ?)');
$insert_partie->execute(array($dossier, $nombre));
Merci pour vos réponses.
2 réponses
-
Bonjour,
Un Execute s'utiliser après un PREPARE
Je rappelle également (à toutes fins utiles...) qu'il faut activer la gestion d'erreur PDO ET placer CHAQUE requête dans un bloc try/Catch comme expliqué ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Donc ton code devient$sql = 'INSERT INTO '.$dossier.'(nompartie, nombre) VALUES(?, ?)'; $datas = array($dossier, $nombre); try{ $insert_partie = $bdd->prepare($sql); $insert_partie->execute($datas); }catch(Exception $e){ echo "Erreur : " / $e->getMessage(); }
Je t'invite également à lire (et à appliquer ) les conseils donnés ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
.
-
$insert_partie = ('INSERT INTO '.$dossier.'(nompartie, nombre) VALUES(?, ?)');
Pas besoin des parenthèses ici.
Le . insert la valeur de la variable, donc ici $dossier définit le nom de la table.
Sans plus d'information, impossible d'aller plus loin.
Déjà affiche le contenu de la variable $insert_partie pour voir ce que ça donne.
-
Merci pour ta réponse.
Tu va trouvé le code bizarre mais tien
<?php $bdd = new PDO('mysql:host=blablabla;dbname=jeux' , 'blablabla', 'blablabla'); $nombre_a = rand(111111 , 999999); if(!empty($_POST['nompartie']) AND !empty($_POST['nombre'])){ $dossier = $_POST['nompartie'].'_'.$nombre_a; if(is_numeric($_POST['nombre'])){ if(!is_dir($dossier)){ mkdir($dossier); $table = $bdd -> query('CREATE TABLE '.$dossier.' ( id INT PRIMARY KEY NOT NULL, nompartie VARCHAR(100), nombre INT )'); $nombre = htmlspecialchars($_POST['nombre']); sleep(1); $insert_partie = ('INSERT INTO '.$dossier.'(nompartie, nombre) VALUES(?, ?)'); $insert_partie->execute(array($dossier, $nombre)); $fichier = fopen($dossier.'\index.php' , 'w+'); $texte = ' <?php $bdd = new PDO("mysql:host=blablabla;dbname=jeux" , "blablabla", "blablabla"); ?> <!DOCTYPE html> <html> <head> </head> <body> <center> <form method="POST"> <label>Nombre</label><br> <input type="text" name="nb" id="nb"> <input type="submit" name="vd" id="vd"> </form> </center> </body> </html> '; fwrite($fichier, $texte); fclose($fichier); echo '<center>Nom de la partie : '.$dossier.'<br>Nombre : '.$_POST['nombre'].'<br>'; } else { echo '<center><b class="warning">Dossier deja existant.</b></center>'; } } else { echo '<center><b class="warning">Erreur !</b></center>'; } } else { echo '<center><b class="warning">Erreur !</b></center>'; } ?>
Le code est juste pour moi, c'est pas pour mettre en ligne
Merci pour vos réponse. -
-