Insert into qui ne fonctionne pas
Résolu
philipf
-
philipf -
philipf -
Bonjour,
J'ai téléchargé EasyPhp Devser et j'ai quelques soucis.
Pour faire mon test d'une requête Select j'ai inséré manuellement des données et la requête fonctionne.
Pour insérer des données ça ne marche pas.
mon fichier de connexion
le fichier qui me sert à insérer des données
les messages générés
Notice: Undefined variable: requete in C:\Weblocal\Sites\Jumelage\fr\membres.php on line 81
Warning: mysqli::query(): Empty query in C:\Weblocal\Sites\Jumelage\fr\membres.php on line 81
Notice: Undefined variable: requete in C:\Weblocal\Sites\Jumelage\fr\membres.php on line 81
Fatal error: Call to undefined method mysqli::error() in C:\Weblocal\Sites\Jumelage\fr\membres.php on line 81
Dans cette requête je veux seulement insérer un nom, un prénom et la nationalité dans la base de données. Le reste le sera mis à jour par les membres.
Mon ancienne requête fonctionnait avec easyPhp 5.4 mais pas avec cette version, et je j'arrive pas à m'en sortir même en consultant les tutos
J'ai téléchargé EasyPhp Devser et j'ai quelques soucis.
Pour faire mon test d'une requête Select j'ai inséré manuellement des données et la requête fonctionne.
Pour insérer des données ça ne marche pas.
mon fichier de connexion
<?php $host = "127.0.0.1"; $user = "root"; $password = ""; $bdd = "jumelage"; $mysqli = new mysqli($host, $user, $password, $bdd); if ($mysqli->connect_error) { die('Erreur de connexion ('.$mysqli->connect_errno.')'. $mysqli->connect_error); } $con = mysqli_connect($host,$user,$password,$bdd); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); }
le fichier qui me sert à insérer des données
<?php include("connect.php"); include("fonctionsphp.php"); <?php $name = isset($_POST['name']) ? $_POST['name'] : ""; $firstname = isset($_POST['firstname']) ? $_POST['firstname'] : ""; $phone = ''; $nation = isset($_POST['nation']) ? $_POST['nation'] : ""; $mail = ''; $password = ''; $saisie = ''; if (isset($_POST['reset'])) { $_POST['name'] = ''; $_POST['firstname'] = ''; $_POST['nation'] = ''; } if (isset($_POST['enregistrer'])) { if ((!empty($_POST['name'])) && (!empty($_POST['firstname'])) && (!empty($_POST['nation']))){ //on met la 1ere lettre du nom en majuscule $name = ucfirst($_POST['name']); $firstname = ucfirst($_POST['firstname']); $nation = ucfirst($_POST['nation']); //enregistre le membre //$requete = "INSERT INTO membres (id, nom, prenom, phone, nationalite, mail, password) //VALUES('','$name','$firstname', '$phone', '$nation', '$mail', '$password')"; exec("INSERT INTO membres (id, nom, prenom, phone, nationalite, mail, password) VALUES('','$name','$firstname', '$phone', '$nation', '$mail', '$password')"); $resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error()); $saisie = "Enregistrement de $name $firstname $nation effectué"; $_POST['name'] = ''; $_POST['firstname'] = ''; $_POST['nation'] = ''; } else { $saisie = "Pas d'enregistrement effectué, les casess ne sont pas renseignées !"; } } ?> <div style="text-align:center"> <p> pour obtenir ß = alt +225</p> <FORM name="research" ACTION = "index.php?page=comite" METHOD="POST"> Nom : <input type="text" name="name" value="" /><br /><br /> Prenom : <input type="text" name="firstname" value="" /><br /><br /> Nationalité : <input type="text" name="nation" value="" /><br /><br /> <input style="cursor:pointer;" type="submit" name="enregistrer" value="Enregistrer" /> </FORM> <?php echo $saisie;?> </div>
les messages générés
Notice: Undefined variable: requete in C:\Weblocal\Sites\Jumelage\fr\membres.php on line 81
Warning: mysqli::query(): Empty query in C:\Weblocal\Sites\Jumelage\fr\membres.php on line 81
Notice: Undefined variable: requete in C:\Weblocal\Sites\Jumelage\fr\membres.php on line 81
Fatal error: Call to undefined method mysqli::error() in C:\Weblocal\Sites\Jumelage\fr\membres.php on line 81
Dans cette requête je veux seulement insérer un nom, un prénom et la nationalité dans la base de données. Le reste le sera mis à jour par les membres.
Mon ancienne requête fonctionnait avec easyPhp 5.4 mais pas avec cette version, et je j'arrive pas à m'en sortir même en consultant les tutos
Configuration: Windows / Chrome 75.0.3770.100
A voir également:
- Insert into qui ne fonctionne pas
- Touche insert - Guide
- Disk boot failure insert system disk and press enter - Guide
- Insert boot media in selected boot device and press a key ✓ - Forum Windows 10
- Activer touche insert sur ASUS UX32A - Forum Clavier
- Monitor will go into standby mode traduction français ✓ - Forum Matériel & Système
3 réponses
Bonjour,
C'est normal : tu as commenté la ligne qui définit $requete, et ensuite tu fais $resultat = $mysqli->query($requete)...
Xavier
C'est normal : tu as commenté la ligne qui définit $requete, et ensuite tu fais $resultat = $mysqli->query($requete)...
Xavier
Ok mais comme je l'ai dit la requête mise en commentaire fonctionnait avec EasyPhp 5.4 mais elle ne fonctionne pas avec 5.6
D'après ce que j'ai pu lire une insertion avec 5.6 doit être
je ne sais pas comment écrire le code pour gérer les erreurs de la requête.
D'après ce que j'ai pu lire une insertion avec 5.6 doit être
exec("INSERT INTO membres (id, nom, prenom, phone, nationalite, mail, password) VALUES('','$name','$firstname', '$phone', '$nation', '$mail', '$password')");
je ne sais pas comment écrire le code pour gérer les erreurs de la requête.
Bonjour,
Alors déjà, non, exec() ne sert pas à exécuter une requête SQL, ça a un tout autre sens en PHP : https://www.php.net/manual/fr/function.exec.php
Ensuite, j'ai l'impression qu'il y a quelques mélanges dans ton code.
Dans ton fichier de connexion pour commencer : pourquoi te connectes-tu deux fois en utilisant deux méthodes différentes ? Je te suggère de ne retenir que la première, qui définit $mysqli.
Ensuite, exécute tes requêtes comme ça :
Tu dis que ça ne marche plus avec EasyPhp 5.6, mais pourtant ça devrait. Pourrais-tu m'en dire plus ? Tu as un message d'erreur ? Une source ? La doc de Php en tout cas ne dit rien de tel : https://www.php.net/manual/fr/mysqli.query.php
Xavier
Alors déjà, non, exec() ne sert pas à exécuter une requête SQL, ça a un tout autre sens en PHP : https://www.php.net/manual/fr/function.exec.php
Ensuite, j'ai l'impression qu'il y a quelques mélanges dans ton code.
Dans ton fichier de connexion pour commencer : pourquoi te connectes-tu deux fois en utilisant deux méthodes différentes ? Je te suggère de ne retenir que la première, qui définit $mysqli.
Ensuite, exécute tes requêtes comme ça :
$requete = "INSERT INTO membres (nom, prenom, phone, nationalite, mail, password) VALUES('$name','$firstname', '$phone', '$nation', '$mail', '$password')"; $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error);
Tu dis que ça ne marche plus avec EasyPhp 5.6, mais pourtant ça devrait. Pourrais-tu m'en dire plus ? Tu as un message d'erreur ? Une source ? La doc de Php en tout cas ne dit rien de tel : https://www.php.net/manual/fr/mysqli.query.php
Xavier
Bonjour,
Merci pour la réponse.
J'ai regardé d'un peu plus près depuis mon post et voilà mon fichier membres.php
Malgré les modifications je n'ai toujours rien dans la table des membres
Merci pour la réponse.
J'ai regardé d'un peu plus près depuis mon post et voilà mon fichier membres.php
<?php //connexion à la bdd $cnx = new PDO('mysql:host=127.0.0.1;dbname=jumelage;charset=utf8', 'root', ''); $nom = isset($_POST['nom']) ? $_POST['nom'] : ''; $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : ''; $telephone = isset($_POST['telephone']) ? $_POST['telephone'] : 'NULL'; $nationalite = isset($_POST['nationalite']) ? $_POST['nationalite'] : ''; $mail = ''; $password = ''; $saisie = ''; if (isset($_POST['enregistrer'])) { if ((!empty($_POST['nom'])) && (!empty($_POST['prenom'])) && (!empty($_POST['nationalite']))){ //on met la 1ere lettre du nom en majuscule $nom = ucfirst($_POST['nom']); $prenom = ucfirst($_POST['prenom']); $telephone =''; $nationalite = ucfirst($_POST['nationalite']); //enregistre le membre //requête avec 5.6 try { $sql = 'INSERT INTO membres(nom, prenom, telephone, nationalite) VALUES(:nom, :prenom, :telephone, :nationalite)'; $req = $cnx->prepare( $sql ); $req->execute(array('nom'=>$nom, 'prenom'=>$prenom, 'telephone'=>$telephone, 'nationalite'=>$nationalite)); $saisie = "Enregistrement de nom :$nom, prénom :$prenom, telephone :$telephone, nationalité: $nationalite effectué"; } catch(Exception $e) { die('erreur : '.$e->getMessage()); } $_POST['nom'] = ''; $_POST['prenom'] = ''; $_POST['nationalite'] = ''; } else { $saisie = "Pas d'enregistrement effectué, les cases ne sont pas renseignées !"; } } ?> <div style="text-align:center"> <p> pour obtenir ß = alt +225</p> <FORM name="research" ACTION = "index.php?page=comite" METHOD="POST"> Nom : <input type="text" name="nom" value="" /><br /><br /> Prenom : <input type="text" name="prenom" value="" /><br /><br /> Nationalité : <input type="text" name="nationalite" value="" /><br /><br /> <input style="cursor:pointer;" type="submit" name="enregistrer" value="Enregistrer" /> </FORM> <?php echo $saisie;?> </div>
Malgré les modifications je n'ai toujours rien dans la table des membres
la ligne 81 est celle-ci