Problèmes Insertion de données MYSQL

Résolu/Fermé
cod311 Messages postés 3 Date d'inscription samedi 26 octobre 2019 Statut Membre Dernière intervention 27 octobre 2019 - 26 oct. 2019 à 22:26
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>
A voir également:

1 réponse

jordane45 Messages postés 38244 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 octobre 2024 4 690
26 oct. 2019 à 22:55
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);
?> 




0
cod311 Messages postés 3 Date d'inscription samedi 26 octobre 2019 Statut Membre Dernière intervention 27 octobre 2019
26 oct. 2019 à 23:13
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
0
jordane45 Messages postés 38244 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 octobre 2024 4 690
26 oct. 2019 à 23:26
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.
0
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
Ok c'est bon merci sa marche
0