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

Langage PHP Discussion :

migration de mysql vers pdo


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 47
    Par défaut migration de mysql vers pdo
    Bonjour,

    Je suis perdu.

    J'ai fait le formulaire suivant :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <form action="register.php" method="post"><br /><br />
    Nom : <input type="text" name="name" size="40" maxlength="256" /><br /><br />
    Pseudo : <input type="text" name="login" size="40" maxlength="256" /><br /><br />
    Mot de Passe : <input type="password" name="pass" size="40" maxlength="256" /><br /><br />
    Adresse e-mail : <input type="text" name="email" size="40" maxlength="256" /><br /><br />
    Localisation : <input type="text" name="location" size="40" maxlength="256" /><br /><br />
    Site internet / Blog : <input type="text" name="website" size="40" maxlength="256" /><br /><br />
    <input type="submit" value="S'inscrire" />
    </form>

    Rien de bien compliqué jusque là. Puis je veux écrire ces infos dans une base de données mysql :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <?php
     
     
     
    	if (isset($_POST['login']) and isset($_POST['pass']))
     
    	    {
    		  if ($_POST['login'] != "" and $_POST['pass'] != "")
    		   {
    		   		$nom = $_POST['name'];
    				$pseudo = $_POST['login'];
    				$motdepasse = $_POST['pass'];
    				$email = $_POST['email'];
    				//$date_creation = now();
    				$localisation = $_POST['location'];
    				$site = $_POST['website']; 
    				$pass = md5 ($motdepasse);
     
     
    				require ("connexion.php");
     
    				$query = 'INSERT INTO users (user_login, user_password, user_email, user_name, user_location, user_website) VALUES ($pseudo, $pass, $email, $nom, $localisation, $site)';
    				$stmt = $bdd->prepare($query);
     
     
     
    				$stmt->execute();
     
    							 }
    		   		   else
    		   {
    		   echo 'Les informations saisies sont incorrectes !';
    		   }
    		}
    ?>

    Au final, ça n'écrit rien du tout dan ma bdd et je ne comprends pas pourquoi si ce n'est que comme je débute sur PDO je dois avoir loupé qqch mais je ne sais pas trop quoi.

    Quelqu'un peut m'aider, svp ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Regardes les exemples de la doc http://php.net/manual/fr/pdo.prepare.php
    Tu trouve que cela ressemble à ce que tu as fait ?

    EDIT : Si tu fais une requête préparée, il faut :
    1/ Utiliser des marqueurs nommés ou interrogatifs pour symboliser tes variables dans la préparation de la requête
    2/ Associer tes marqueurs avec bindParam ou bindValue avant d'utiliser execute(), ou sinon passer le tableau des marqueurs et de leur valeur dans execute()

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 47
    Par défaut
    J'avais vu cette doc et j'ai recopié aussi la méthode avec bindparam mais j'avais tjs le même problème !!

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 47
    Par défaut
    Bon, j'ai tout relu et corrigé le code.

    J'obtiens donc ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?php
    	if (isset($_POST['login']) and isset($_POST['pass']))
     
    	    {
    		  if ($_POST['login'] != "" and $_POST['pass'] != "")
    		   {
    		   		$nom = $_POST['name'];
    				$pseudo = $_POST['login'];
    				$motdepasse = $_POST['pass'];
    				$email = $_POST['email'];
    				$localisation = $_POST['location'];
    				$site = $_POST['website']; 
    				$pass = md5 ($motdepasse);
     
    				require ("connexion.php");
     
    				$query = 'INSERT INTO users (user_login, user_password, user_email, user_name, user_location, user_website) VALUES (:pseudo, :pass, :email, :nom, :localisation, :site)';
    				$stmt = $bdd->prepare($query);
     
    				$stmt->bindParam(':pseudo', $pseudo);
    				$stmt->bindParam(':pass', $pass);
    				$stmt->bindParam(':email', $email);
    				$stmt->bindParam(':nom', $nom);
    				$stmt->bindParam(':localisation', $localisation);
    				$stmt->bindParam(':site', $site);
     
    				$stmt->execute();
    			 }
    		   		   else
    		   {
    		   echo 'Les informations saisies sont incorrectes !';
    		   }
    		}
    ?>

    Ce code est fonctionnel...

    ... mais... ça m'a pas l'air très propre tout ça...

    Vous en pensez quoi ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    C'est parfaitement propre.

    Cela dit souvent on utilise un tableau avec les marqueurs et leurs valeurs correspondantes que l'on passe en paramètre dans execute(). C'est souvent plus rapide et pratique que de binder séparément les valeurs.

    Mais d'un autre côté le fait de binder séparément les variables permet de leur attribuer séparément un type spécifique (option que tu n'utilise pas dans ton exemple), alors que quand on passe un tableau le mode chaine de caractère (PDO:: PARAM_STR) est utilisé par défaut pour toutes les valeurs du tableau.


    EDIT: Utilises plutôt l'opérateur "&&" à la place de "and", ce n'est pas tout à fait la même chose et "&&" à un comportement plus prévisible dans les conditions multiples (les priorités d'exécution ne sont pas les mêmes).

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 47
    Par défaut
    ok je remplace mes and par des &&

    autre chose ; j'aimerais afficher un texte selon que mon enregistrement s'est bien passé ou non.

    avec mysql, j'aurais fait un if (!$stmt) mais là ça n'a pas l'air de marcher.

    une idée ?

Discussions similaires

  1. migration de mysql vers postgresql
    Par ANISSS dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 18/05/2007, 15h19
  2. Réponses: 3
    Dernier message: 08/03/2007, 10h53
  3. Migration de Mysql vers Sql Server
    Par bluecurve dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/02/2007, 00h21
  4. Re besoin de vous pour migration de mysql vers dsl server
    Par scaleo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/11/2006, 13h45
  5. [SGBD] Migration de mysql vers PostgreSQL ?
    Par haffouff dans le forum SQL Procédural
    Réponses: 12
    Dernier message: 25/05/2006, 15h29

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