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 :

connexion mysql


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut connexion mysql
    Bonjour,

    J'ai installé wampserver sur mon ordi avec mysql pour faire un petit programme php voici le code :

    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
     
    $id_resultats = '';
    $etp=$_POST['etp'];
    $prem=$_POST['prem'];
     
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
     $bdd = new PDO('mysql:host=localhost;dbname=tour', 'root', '', $pdo_options);
     
     
    if($etp != '' && $prem !='' )
    {
    $requete = "INSERT INTO `etape` ( `id` , `Num_etape` , `Dossard` , `prix`) VALUES (NULL , '$etp', '$prem', '1000')";
     
    }	
     
    ?>

    La requête fonctionne si je l’exécute dans MySQL, mais ici, elle n'insère pas les valeurs dans la table. Je pense que la façon dont je fais ma connexion n'est pas correcte.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Le code proposé alimente une variable php $requete mais rien n'est exécuté...
    PDO::prepare et PDOStatement->execute sont les étapes qui t'intéressent.

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Il manque l'exécution de la requête, là tu as juste mis une chaine dans une variable.
    Je te laisse regarder la documentation de PDO pour savoir comment on exécute une requête.
    Je te conseille également de te renseigner sur les problèmes de sécurité liés aux injections SQL.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Je te conseille également de te renseigner sur les problèmes de sécurité liés aux injections SQL.
    Très bon conseil, c'est d'ailleurs pour ça, toonpax, que je te renvoie vers PDO prepare.

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci à vous 2 pour votre aide. J'aurai une autre question : serait-il possible de ne pas utiliser le pdo et faire la connexion de la manière suivante ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $dbhost="localhost";
    $user="root";
    $code="";
    $usebdd="tour";

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $connexion= mysql_connect ("$dbhost", "$user", "$code");
    echo $connexion;
    if (!$connexion)
    	{
    	echo "impossible d'effectuer la connexion";
    	exit;
    	}
     
    $db=@mysql_select_db("$usebdd",$connexion);
    if (!$db)
       {
       echo "impossible de selectionner cette base de donnees";
       exit;
       }

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Ben évidemment c'est possible...
    La question serait plutôt pourquoi ne pas utiliser PDO, surtout que tu sembles être en début de projet.

    PDO permet une utilisation simple des requêtes "préparées", ce qui permet notamment d'éviter sans y penser les problèmes de type injection SQL.
    Couplé avec MySql, je ne sais si les requêtes préparées améliorent drastiquement la scalabilité de l'appli, mais avec un SGBDR tel qu'oracle c'est indispensable.

    Indépendemment, PDO est une valeur plus que montante pour connecter PHP à une base... Faire l'effort de comprendre son utilisation ne pourra qu'être bénéfique.

    Si tu ne souhaites pas utiliser PDO, il faut alors utiliser mysql_real_escape_string pour éviter les problèmes d'injection SQL.

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Voila, après avoir lu les documents sur pdo, je trouve cela plus intéressant d'utiliser cela. La connexion se passe bien. J'aurais juste une petite question.
    J'ai récupéré ces 2 variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $etp=$_POST['etp'];
    $prem=$_POST['prem'];
    Ma requête est la suivante, comment utilise-t-on les variables $ dans la requête, s'il vous plait ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $bdd->exec('INSERT INTO `etape` ( `id` , `Num_etape` , `Dossard` , `prix` )
    																VALUES (NULL , $etp,$prem, 1000)');

  8. #8
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Il y a des exemples d'utilisation de la méthode prepare() dans le lien au-dessus.

    Tu peux aussi utiliser PDOStatement::bindParam().
    D'ailleurs .. A quoi correspond ta méthode exec() ..?

Discussions similaires

  1. [JSP] erreur lors d'une connexion à mySQL
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/08/2004, 16h48
  2. Erreur connexion mysql
    Par bodbod dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/07/2004, 09h28
  3. Connexion mysql
    Par olive.m dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 18/06/2004, 17h44
  4. [Connexion MySQL] Can't connect to MySQL server
    Par mat_dum dans le forum Outils
    Réponses: 12
    Dernier message: 17/07/2003, 07h49
  5. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09

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