[php] bdd, insertion nouvelles données

sim -  
Xil Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, j'ai fait un ptit sript php pour rentrer des nouveaux membres sur une table "membres". Le probléme c'est que un fois interpréter, ça m'affiche bien" it's working" mais ça ne rentre pas les infos dans la table ....
Quel est le prob à votre avis ? merci !


<?php 
	if (isset($_POST['password']) AND isset($_POST['email'] ) AND isset($_POST['password2']) AND isset($_POST['email2'] )
	AND $_POST['password2'] == $_POST['password']
	AND $_POST['email2'] == $_POST['email'])
	{
		$nom=$_POST['nom'];
		$prenom=$_POST['nom'];
		$adresse=$_POST['adresse'];
		$codep=$_POST['codep'];
		$ville=$_POST['ville'];
		$tel=$_POST['tel'];
		$telp=$_POST['telp'];
		$email=$_POST['email'];
		$password=$_POST['password'];
		mysql_connect("db198.1and1.fr", "dbo227375794", "sv13061986"); // Connexion à MySQL
		mysql_select_db("db227375794"); // Sélection de la base On est connectés, on peut travailler sur la BDD
		mysql_query("INSERT INTO membres(id,nom,prenom,adresse,codep,ville,tel,telp,email,password) VALUES('',$nom,$prenom,$adresse,$codep,$ville,$tel,$telp,$email,$password)");
		echo 'its working!!!';
	}
	else {
			echo'marche pas ';
		}
?>
A voir également:

6 réponses

Xil Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   257
 
Ton echo 'its working'; ne suffit pas pour vérifier que la requête s'est effectuée correctment.

mysql_query() renvoit FALSE s'il y'a une erreur, donc, teste le retour :
$result = mysql_query( 'requête');

if($result == false){
   echo mysql_error();
}else
  echo 'its working';

Ce n'est par contre pas très prudent de fournir ton mot de passe BDD en clair sur ce forum.
0
sim
 
Donc voici ce qu'il me répond ...

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 'sdf,sdf,dd,dd)' at line 1



J'ai ce code au départ :

<?php 
	if (isset($_POST['password']) AND isset($_POST['email'] ) AND isset($_POST['password2']) AND isset($_POST['email2'] )
	AND $_POST['password2'] == $_POST['password']
	AND $_POST['email2'] == $_POST['email'])
	{
		$nom=$_POST['nom'];
		$prenom=$_POST['nom'];
		$adresse=$_POST['adresse'];
		$codep=$_POST['codep'];
		$ville=$_POST['ville'];
		$tel=$_POST['tel'];
		$telp=$_POST['telp'];
		$email=$_POST['email'];
		$password=$_POST['password'];
		mysql_connect("db198.1and1.fr", "dbo227375794", "sv130686"); // Connexion à MySQL
		mysql_select_db("db227375794"); // Sélection de la base On est connectés, on peut travailler sur la BDD
		$result = mysql_query("INSERT INTO membres(id,nom,prenom,adresse,codep,ville,tel,telp,email,password) VALUES('',$nom,$prenom,$adresse,$codep,$ville,$tel,$telp,$email,$password)");

		if($result == false){
			echo mysql_error();
			}else
			echo 'its working';
  
  
	}
	else {
			echo'marche pas ';
		}
?>



Je comprends pas trop le if else que t'as fait en fait ....
0
Xil Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   257
 
$result = mysql_query("INSERT INTO ...");

Si il y'a une erreur dans la requête, $result aura la valeur FALSE. Je teste donc $result dans le if.
Si $result vaut false, c'est qu'il y'a une erreur, donc j'affiche l'erreur avec mysql_error();
Sinon, c'est que tout s'est bien passé.

Il te manque les quotes ( ' ) dans ta requête pour que ce soit correcte. Dans une requête SQL, les chaînes de caractères doivent être entourées de ' ' . Donc en php, les variables qui contiennent ces chaines doivent aussi être entourées de ' '.
"INSERT INTO membres(id,nom,prenom,adresse,codep,ville,tel,telp,email,password) VALUES('','$nom','$prenom','$adresse',$codep,'$ville','$tel','$telp','$email','$password')"



Et rappel de sécurité :
https://www.php.net/htmlspecialchars
https://www.php.net/strip_tags
https://www.php.net/intval
https://www.php.net/mysql_real_escape_string
https://www.php.net/addslashes

Si tu ne mets pas de sécurité, ton site pourra être piraté sans aucune difficultés. Déjà qu'avec ton mot de passe sur le forum c'est pas gagné... Vois si tu peux le faire changer par ton hébergeur. ET VITE !

mysql_connect("db198.1and1.fr", "dbo227375794", "sv130686");
Avec ca, on a tout ce qui faut pour aller voir ta base de donnée et faire tout ce qu'on veut dessus...
0
sim
 
ouaip! grand merci c'est résolu ... c'était tout bête en fait.
Sinon tu me parler de sécurité dansun autre post ... mais je vois pas trop quoi faire de plus avec les lien que t'avais mis.
en tout cas merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Xil Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   257
 
$value = mysql_real_escape_string(htmlspecialchars(strip_tags( $_POST['value'] )));

et pour les données numérique (code postal par exemple):
$code = intval($_POST['code']);

Et fais changer ton mot de passe BDD le plus vite possible... (voir ma précédente réponse).
A l'avenir, ne copie colle pas ce genre d'info sur un forum publique. Remplace les simplement par '******'...

Petite explication du pourquoi de la nécessité de ces fonctions :
https://fr.wikipedia.org/wiki/Injection_SQL
0
sim
 
meci bien je vais voir ça ce soir

ps: ce n'était pas les bons code connexions, ne t'inquiéte pas ^^
0
Xil Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   257
 
Ah, c'est déjà ça.
Ca en avait tout l'air.

Vaut mieux prévenir que guérir ;)
0