Problèmes Insertion de données MYSQL [Résolu]

Messages postés
3
Date d'inscription
samedi 26 octobre 2019
Statut
Membre
Dernière intervention
27 octobre 2019
- - Dernière réponse : cod311
Messages postés
3
Date d'inscription
samedi 26 octobre 2019
Statut
Membre
Dernière intervention
27 octobre 2019
- 27 oct. 2019 à 14:17
Bonjour, j'ai créer simple script en PHP qui insert des données dans une bases de données MYSQL sauf j'ai rencontrer une erreur lors de l'insertion

Voici l'erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`ACCOUNT` (username,mail,password) VALUES ('', '', '')' at line 1

J'ai regarder sur internet mais je n'est rien trouvez se qui pouvais réssoudre a mon problèmes
J'ai essayer de enlever `` au niveaux de ACCOUNT et aussi j'ai essayer de mettre sqli.ACCOUNT mais sa ne marche pas, merci d'avence pour vos réponses

Voici le code PHP :


<?php

 $_POST['username'] = $username;
 $_POST['mail'] = $mail;
 $_POST['password'] = $password;


 $dbhost = "localhost:3306";
 $dbuser = "root";
 $dbpass = "";

 $dbname = "sqli";

 $connexion = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die (mysqli_error());

/* mysqli_select_db($connexion, $dbname);*/

$sql = " INSERT INTO `ACCOUNT` (username,mail,password) VALUES ('$username', '$mail', '$password')" or die (mysql_error());

mysqli_query($connexion, $sql) or die (mysqli_error($connexion));


Voici le code SQL lors de la création de la db

CREATE DATABASE sqli;

USE sqli;



CREATE TABLE `ACCOUNT`
(
	`id` INT NOT NULL AUTO_INCREMENT,
	`username` VARCHAR(60) NOT NULL,
	`mail` VARCHAR(90) NOT NULL,
	`password`VARCHAR(60) NOT NULL,

	 PRIMARY KEY (`id`)
);


Et voici le formulaire :

<!DOCTYPE html>
<html>
<head>
	<title>Inscription</title>
	<meta charset="utf-8">
</head>
<body>
<div>
<h1> Create a account </h1>
	<form action="x.php" method="POST">
		<p> Username </p>
		<input type="text" size="120" name="username" required>
		<p> Mail </p>
		<input type="text" size="120" name="mail" required>
		<p> Password </p>
		<input type="password" size="120" name="password" required><br>
		<input type="submit" size="30">
	</form>
</div>


</body>
</html>
Afficher la suite 

1 réponse

Messages postés
26769
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
1880
0
Merci
Bonjour,


Lorsque tu as un souci de requête.. Commence faire un echo de ta variable $sql
Ensuite, copie ce que l'écho t'affiche et va le coller directement dans ton phpmyadmin ( ou en ligne de commande si tu préfères) et regarde ce que ça donne.

Pense également que tu peux faire des retours à la ligne dans ta requête... ça te donner une idée plus précise de l'endroit concerné.
par exemple :
$sql = " INSERT INTO `ACCOUNT` 
            (username,mail,password) 
           VALUES ('$username', '$mail', '$password')" ;



Par contre... que vient faire ici le bout de code
or die (mysql_error())

il n'a pas sa place ici.
Ni dans tout ton code d’ailleurs... vu que tu utilises l'extension mysqli et non mysql !

On notera également au passage... qu'on n'utilise pas les "OR DIE" dans du code en mysqli...

Un code mysqli ça se présente comme ça (exemple pris sur le site https://www.w3schools.com/php/func_mysqli_error.asp )
 <?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

// Perform a query, check for error
if (!mysqli_query($con,"INSERT INTO Persons (FirstName) VALUES ('Glenn')"))
  {
  echo("Error description: " . mysqli_error($con));
  }

mysqli_close($con);
?> 




cod311
Messages postés
3
Date d'inscription
samedi 26 octobre 2019
Statut
Membre
Dernière intervention
27 octobre 2019
-
Salut, merci des conseilles, ducoup j'ai essayer d' adapter mon code par rapport a l'exemple de w3schools, par contre j'obtient une autre erreur
et aussi je ne sais pas comment faire un echo de mon requette pour la mettre directement dans mon sgbd

Ducoup voici le code
<?php

 $_POST['username'] = $username;
 $_POST['mail'] = $mail;
 $_POST['password'] = $password;


 $dbhost = "localhost:3306";
 $dbuser = "root";
 $dbpass = "";

 $dbname = "sqli";

 $con = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
 if (mysqli_connect_errno())
 {
 	echo "Failed to connect to MySQL : " . mysqli_connect_error();
 }



 if (!mysqli_query($con, "INSERT INTO ACCOUNT (username,mail,password) VALUES ('$username', '$mail', '$password')"))
{
	echo("Error description: " . mysqli_error($con));
}



mysqli_close($con);

?>


Et le message d'erreurque j'obtient est :

Error description: Table 'sqli.INTO ACCOUNT' doesn't exist

Et si je met des `` autours de ACCOUNT j'obtient ceci comme erreur :

Error description: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`ACCOUNT` (username,mail,password) VALUES ('', '', '')' at line 1
jordane45
Messages postés
26769
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
1880 -
Tu as utilisé un mot réservé comme nom de table
ACCOUNT est un mot réservé... tu ne dois pas l'utiliser
https://dev.mysql.com/doc/refman/8.0/en/keywords.html

Renomme ta table autrement.
cod311
Messages postés
3
Date d'inscription
samedi 26 octobre 2019
Statut
Membre
Dernière intervention
27 octobre 2019
-
Ok c'est bon merci sa marche
Commenter la réponse de jordane45