IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

insertion base php


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut insertion base php
    Salutation, je n'ai pas un bien gros problème, c'est plutôt un oubli...

    Je veux insérer une ligne complète dans ma table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    create table Utilisateur
    	(
    		idU int NOT NULL,
    		pseudo varchar(20) NOT NULL,
    		mdp varchar(30) NOT NULL,
    		mail varchar(50) NOT NULL,
    		langue varchar(20) NOT NULL,
    		avatar varchar(300),
    		nbFile int,
    		nbCom int,
    		CONSTRAINT pk_Utilisateur PRIMARY KEY (idU),
    		CONSTRAINT ck_langue CHECK ((langue='French' or langue='English')and (nbFile>=0))
    	);
    Hors pour faire l'insertion, j'ai besoin de savoir à quel identifiant j'en suis.
    Bien sûr, je pourrais faire une requête qui me récupère le max des idU; mais je suis certain qu'il existe une autre solution moins coûteuse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $inscription='insert into Utilisateur(idU,pseudo,mdp,mail,langue,avatar,nbFile,nbCom) values (...,$pseudo,$mdp,$mail,$speak,"",0,0)';
    En espérant que vous ayez saisi le problème

    Merci à vous !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ pour une INSERTION, on n'indique pas idU.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $inscription='insert into Utilisateur(pseudo,mdp,mail,langue,avatar,nbFile,nbCom) values ($pseudo,$mdp,$mail,$speak,"",0,0)';
    Encore faut-il qu'il soit défini comme AUTO-INCREMENT.
    Ce qui ne semble pas être le cas.

    2/ On ne met pas directement les variables dans une requête : on utilise les requêtes préparées.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Une clef n'est pas censé être Auto Increment par défaut ?

    Les requêtes préparées...jamais entendu parler de ça, je vais me renseigner =)

  4. #4
    Invité
    Invité(e)
    Par défaut
    1/
    PRIMARY KEY :
    Dans une base de données relationnelle, une clé primaire est une contrainte d'unicité qui permet d'identifier de manière unique un enregistrement dans une table.
    Ca ne veux pas dire qu'elle est AUTO-INCREMENTEE.



    2/ Si tu ne connais pas les requêtes préparées, c'est sûrement que tu utilises encore l'extension mysql_ pour tes requêtes.

    Or, mysql_ est OBSOLETE depuis plusieurs années !
    => utiliser mysqli_ ou PDO.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Effectivement, pour me connecter par exemple je fais comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    require_once("Connect.php");
    		$connexion=mysql_pconnect(SERVEUR,NOM,PASSE);
    		if(!$connexion)
    			{
    			echo "Connexion à ".SERVEUR." impossible";
    			}
    		if(!mysql_select_db(BASE,$connexion))
    		{
    			echo "Connexion Base".BASE."impossible";
    			exit;
    }
    Il y a une raison pour que cette méthode soit obsolète ?



    Du coup, par exemple ce morceau de code se traduirait comment maintenant ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $requete="select pseudo from Utilisateur "; 
    	$resultat=mysql_query($requete,$connexion);
    	while($emp=mysql_fetch_assoc($resultat))
    	{
    		if($emp['pseudo']==$log){
    			$_SESSION['wrongUser']=$log;
    			header('Location: inscription.php');
    			//si pseudo déjà pris on repart à l'inscription
    		}
    	}

  6. #6
    Invité
    Invité(e)
    Par défaut
    Lire :



    Tant qu'à faire (et à moins que tu sois sur free.fr), choisis PDO.


  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Je vais regarder pour ces nouvelles façons de faire toutefois...je vois partout que ça devient obsolète, mais je ne vois rien qui explique pourquoi ça devient obsolète...ce qui me laisse quelque peu perplexe il faut bien l'avouer...

    Pour ce qui était de mon problème, j'ai changé ma BD et mettant de façon le auto increment et effectivement désormais ça marche.
    Merci !

    Le problème est donc résolu.


    Mais pour rebondir, étant donné que ce que j'ai fais en passant par mysql fonctionne...en quoi c'est obsolète ? Par rapport à des aspects sécuritaires ? Autre chose ?

    Il n'y a pas l'air d'y avoir des problèmes sur la lecture des requêtes j'ai fais plusieurs tests, niveau connexion à la BD aussi...



    Je veux bien appliquer mais, si j'ai le choix entre deux méthodes (3 dans le cas présent); j'aimerais bien comprendre ou tout du moins savoir pourquoi on me dit d'utiliser une plutôt qu'une autre.

  8. #8
    Invité
    Invité(e)
    Par défaut
    mysql_ est obsolète, car ce n'est plus maintenu (depuis plusieurs années), et bientôt sera purement et simplement supprimé !


    API recommandé

    Il est recommandé d'utiliser soit l'extension mysqli, soit l'extension PDO_MySQL.
    Il n'est pas recommandé d'utiliser l'ancienne extension mysql pour de nouveaux développements sachant qu'elle est obsolète depuis PHP 5.5.0, et sera supprimée dans un futur proche.
    Dernière modification par Invité ; 05/10/2015 à 09h28.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/03/2014, 09h16
  2. [MySQL] affichage d'une page après l'insertion dans la base PHP/MySQL
    Par autre dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 22/09/2011, 11h24
  3. [DBExpress] Formulaire d'insertion (Base de donnée)
    Par Nadd dans le forum C++Builder
    Réponses: 14
    Dernier message: 12/07/2007, 10h22
  4. [Help] pb d'insertion via PHP ...
    Par romtrash dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/04/2005, 11h47
  5. Transfert d'une base PHP postgreSQL
    Par colore dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 05/04/2004, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo