Insertion des éléments du formulaire dans la base de donnée
Résolu
KAFCISCO
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
kafcisco -
kafcisco -
Bonjour, cela fait un moment que je travaille sur un formulaire et je rencontre un blocage. J'ai fait trois types de scripts.
Un script pour le formulaire, deux php pour ajout et connexion.
Problème: après validation des données du formulaire le navigateur affiche l'erreur que voici:
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 'values[(pseudo,adresse)]' at line 1
j'ai essayé d'apporter une correction, mais impossible
le script est:
<?php
include ('connexion.php');
connexion();
$_post['pseudo']="pseudo";
$_post['adresse']="adresse";
$sql="INSERT INTO inscrit(pseudo,adresse)";
$sql="values[(".$_post['pseudo'].",".$_post['adresse'].")]";
mysql_query($sql)or die(mysql_error());
?>
merci de m'aider.
Un script pour le formulaire, deux php pour ajout et connexion.
Problème: après validation des données du formulaire le navigateur affiche l'erreur que voici:
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 'values[(pseudo,adresse)]' at line 1
j'ai essayé d'apporter une correction, mais impossible
le script est:
<?php
include ('connexion.php');
connexion();
$_post['pseudo']="pseudo";
$_post['adresse']="adresse";
$sql="INSERT INTO inscrit(pseudo,adresse)";
$sql="values[(".$_post['pseudo'].",".$_post['adresse'].")]";
mysql_query($sql)or die(mysql_error());
?>
merci de m'aider.
A voir également:
- Formulaire de connexion php pdo
- Whatsapp formulaire opposition - Guide
- Gmail connexion - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Connexion chromecast - Guide
2 réponses
Salut,
Ta façon de faire n'est pas correct et présente plusieurs problèmes :
- à l'avant dernière ligne tu attribues "value..." à la variable $sql, ce qui créé évidement une erreur lorsque tu la soumets à mysql_query
- Tu créé une grosse faille de sécurité par injection SQL en insérant directement les variables de ton formulaire dans ta requête
- mysql_query est obsolète et ne doit plus être utilisé (il sera supprimé de PHP sous peu)
Pour résoudre tout ces problèmes tu devrais utiliser PDO de cette manière :
PDO échappe automatiquement les valeurs des paramètres, il n'y a donc pas de risque d'injection SQL.
Un peu de lecture :
https://www.php.net/manual/fr/ref.pdo-mysql.php
http://openclassrooms.com/courses/les-transactions-avec-mysql-et-pdo
Ta façon de faire n'est pas correct et présente plusieurs problèmes :
- à l'avant dernière ligne tu attribues "value..." à la variable $sql, ce qui créé évidement une erreur lorsque tu la soumets à mysql_query
- Tu créé une grosse faille de sécurité par injection SQL en insérant directement les variables de ton formulaire dans ta requête
- mysql_query est obsolète et ne doit plus être utilisé (il sera supprimé de PHP sous peu)
Pour résoudre tout ces problèmes tu devrais utiliser PDO de cette manière :
$db = new PDO('mysql:host=localhost;dbname=database', 'user', 'password'); $insert = $db->prepare('INSERT INTO inscrit (pseudo, adresse) VALUES (:pseudo, :adresse)'); $insert->execute(array('pseudo' => $_post['pseudo'], 'adresse' => $_post['adresse']));
PDO échappe automatiquement les valeurs des paramètres, il n'y a donc pas de risque d'injection SQL.
Un peu de lecture :
https://www.php.net/manual/fr/ref.pdo-mysql.php
http://openclassrooms.com/courses/les-transactions-avec-mysql-et-pdo
Merci, CptRomaiin de vouloir m'aider les éléments que tu m'apportés sont intéressants, mais je l'avais dit j'ai fait trois scripts dont tu connais le premier et les deux autres sont:
- connexion:
<?php
$host = "localhost"; /*127.0.0.1 */;
$login = ""; /*root*/;
$password = "";
$base = ""; /*membre*/;
function connexion()
{
global $host, $login, $password, $base;
$db = mysql_connect($host, $login, $password);
mysql_select_db($base,$db);
}
?>
et celui du formulaire
- formulaire:
<html>
<header>
<title>
FICHE D'INSCRIPTION
</title>
<h1>
<marquee>
FAITES VOTRE INSCRIPTION EN 30 SECONDS
</marquee>
</h1>
</header>
<body>
<form action="ajout.php" method="post">
<input type="text" name="pseudo">
PSEUDO
</input></br></br>
<input type="text" name="adresse">
ADRESSE
</input></br></br>
<input type="submit" value="ENREGISTRER"/>
</form>
</body>
</html>
Alors comment dois-je réussir avec les éléments que tu m'a donné?
MERCI
- connexion:
<?php
$host = "localhost"; /*127.0.0.1 */;
$login = ""; /*root*/;
$password = "";
$base = ""; /*membre*/;
function connexion()
{
global $host, $login, $password, $base;
$db = mysql_connect($host, $login, $password);
mysql_select_db($base,$db);
}
?>
et celui du formulaire
- formulaire:
<html>
<header>
<title>
FICHE D'INSCRIPTION
</title>
<h1>
<marquee>
FAITES VOTRE INSCRIPTION EN 30 SECONDS
</marquee>
</h1>
</header>
<body>
<form action="ajout.php" method="post">
<input type="text" name="pseudo">
PSEUDO
</input></br></br>
<input type="text" name="adresse">
ADRESSE
</input></br></br>
<input type="submit" value="ENREGISTRER"/>
</form>
</body>
</html>
Alors comment dois-je réussir avec les éléments que tu m'a donné?
MERCI
Et bien il suffit d'organiser le code de cette manière :
Le formulaire reste inchangé.
La page connexion.php :
La page ajout.php :
Le formulaire reste inchangé.
La page connexion.php :
$host = "localhost"; $login = "root"; $password = ""; $base = "membre"; $db = new PDO('mysql:host=' . $host . ';dbname=' . $base, $login, $password);
La page ajout.php :
include('connexion.php'); $insert = $db->prepare('INSERT INTO inscrit (pseudo, adresse) VALUES (:pseudo, :adresse)'); $insert->execute(array('pseudo' => $_post['pseudo'], 'adresse' => $_post['adresse']));