Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bug de connexion MySQL - PHP - PDO

connexion, base de donnée, php, pdo, bug

    27 juillet 2017 à 23:04:56

    Bien le bonjour à tous (ou bien le bonsoir ;) )

    J'ai décidé de faire une petite MàJ de mon site.

    Cependant, j'ai des problèmes de connexion MySQL. En effet, j'essaye d'utiliser d'objet PDO, (car php aime bien nous torturer avec de la POO :/ ) mais je n'arrive pas à insérer une valeur dans la base de donnée.

    Je n'ai pas de messages d'erreur, et j'ai vérifié la connexion. Pourtant, ça marchait il y a 5 minutes, mais après avoir modifié le code (j'ai mit un htmlspecialchars à mes variables, plus rien.

    Ainsi, j'ai enlevé ce que j'ai ajouté, et bizarrement, quand je remplis de formulaire, rien ne ce passe.

    Pouvez vous m'aider ?

    Merci, cordialement.

    Voici le code :

    <?php
    
    include "function/mysql-func.php";
    include "function/inscription-func.php";
    
    $erreur = "";
    
    if(isset($_POST['submit'])) {
    	
    	if(!empty($_POST['pseudo'])) {
    		
    		if(!empty($_POST['email'])) {
    		
    			if(!empty($_POST['emailVerif'])) {
    			
    				if(!empty($_POST['mdp'])) {
    					
    					if(!empty($_POST['mdpVerif'])) {
    						
    						$pseudo = $_POST['pseudo'];
    						$email = $_POST['email'];
    						$emailVerif = $_POST['emailVerif'];
    						$mdp = $_POST['mdp'];
    						$mdpVerif = $_POST['mdpVerif'];
    						
    						if(strlen($pseudo) >= 3 && strlen($pseudo) <= 15) {
    							
    							if(strlen($email) >= 15 && strlen($email) <= 30) {
    								
    								if($email == $emailVerif) {
    									
    									if(strlen($mdp) >= 6 && strlen($mdp) <= 20) {
    										
    										if($mdp == $mdpVerif) {
    											
    											$insert = $bdd->prepare("INSERT INTO membres VALUES '', '$pseudo', '$email', '', '$mdp'");
    											
    											
    										} else {
    											$erreur = "Le mot de passe et sa confirmation doivent être identiques";
    										}
    										
    									} else {
    										$erreur = "Le mot de passe doit être comprit entre 6 et 20 caractères";
    									}
    									
    								} else {
    									$erreur = "L'E-Mail et sa confirmation ne sont pas identiques";
    								}
    								
    							} else {
    								$erreur = "Veuillez entrer une adresse E-Mail valide";
    							}
    							
    						} else {
    							$erreur = "Le pseudo doit être comprit entre 3 et 15 caractères";
    						}
    					
    					} else {
    						$erreur = "Tout les champs sont obligatoires !";
    					}
    					
    				} else {
    					$erreur = "Tout les champs sont obligatoires !";
    				}
    			
    			} else {
    				$erreur = "Tout les champs sont obligatoires !";
    			}
    		
    		} else {
    			$erreur = "Tout les champs sont obligatoires !";
    		}
    		
    	} else {
    		$erreur = "Tout les champs sont obligatoires !";
    	}
    	
    }



    • Partager sur Facebook
    • Partager sur Twitter
      27 juillet 2017 à 23:19:20

      Salut. Ligne 36, il y a des parenthèses qui manquent(après VALUES). De plus tu prépares la requête mais tu ne l'exécute pas(normal donc qu'il ne se passe rien).
      • Partager sur Facebook
      • Partager sur Twitter
        28 juillet 2017 à 6:16:27

        Bonjour, en activant les erreurs PHP et PDO, tu ne vois rien ?
        • Partager sur Facebook
        • Partager sur Twitter
        Comar
          28 juillet 2017 à 9:05:59

          kulturman a écrit:

          Salut. Ligne 36, il y a des parenthèses qui manquent(après VALUES). De plus tu prépares la requête mais tu ne l'exécute pas(normal donc qu'il ne se passe rien).


          Déjà un bon truc à faire.
          • Partager sur Facebook
          • Partager sur Twitter
            28 juillet 2017 à 10:28:11

            Tout d'abord, merci pour vos réponses ! :)

            J'ai modifié un peu le code, le voici.

            En ce qui concerne les parenthèses après VALUES, j'ai une erreur.

            Parse error: syntax error, unexpected ')' in S:\EasyPHP-12.1\www\*****\- V2.0 -\inscription.php on line 36

            Le code avec les parenthèses :

            											$insert = $bdd->prepare("INSERT INTO membres VALUES ('', '$pseudo', '$email', '', '$mdp'"));
            											$insert->exec();

            De plus, avec ce code, j'ai une erreur à la ligne 37, là ou j’exécute la requête (sans parenthèses après values).


            Fatal error: Call to undefined method PDOStatement::exec() in S:\EasyPHP-12.1\www\****\- V2.0 -\inscription.php on line 37

            <?php
            
            include "function/mysql-func.php";
            include "function/inscription-func.php";
            
            $erreur = "";
            
            if(isset($_POST['submit'])) {
            	
            	if(!empty($_POST['pseudo'])) {
            		
            		if(!empty($_POST['email'])) {
            		
            			if(!empty($_POST['emailVerif'])) {
            			
            				if(!empty($_POST['mdp'])) {
            					
            					if(!empty($_POST['mdpVerif'])) {
            						
            						$pseudo = $_POST['pseudo'];
            						$email = $_POST['email'];
            						$emailVerif = $_POST['emailVerif'];
            						$mdp = $_POST['mdp'];
            						$mdpVerif = $_POST['mdpVerif'];
            						
            						if(strlen($pseudo) >= 3 && strlen($pseudo) <= 15) {
            							
            							if(strlen($email) >= 15 && strlen($email) <= 30) {
            								
            								if($email == $emailVerif) {
            									
            									if(strlen($mdp) >= 6 && strlen($mdp) <= 20) {
            										
            										if($mdp == $mdpVerif) {
            											
            											$insert = $bdd->prepare("INSERT INTO membres VALUES '', '$pseudo', '$email', '', '$mdp'");
            											$insert->exec();
            											
            										} else {
            											$erreur = "Le mot de passe et sa confirmation doivent être identiques";
            										}
            										
            									} else {
            										$erreur = "Le mot de passe doit être comprit entre 6 et 20 caractères";
            									}
            									
            								} else {
            									$erreur = "L'E-Mail et sa confirmation ne sont pas identiques";
            								}
            								
            							} else {
            								$erreur = "Veuillez entrer une adresse E-Mail valide";
            							}
            							
            						} else {
            							$erreur = "Le pseudo doit être comprit entre 3 et 15 caractères";
            						}
            					
            					} else {
            						$erreur = "Tout les champs sont obligatoires !";
            					}
            					
            				} else {
            					$erreur = "Tout les champs sont obligatoires !";
            				}
            			
            			} else {
            				$erreur = "Tout les champs sont obligatoires !";
            			}
            		
            		} else {
            			$erreur = "Tout les champs sont obligatoires !";
            		}
            		
            	} else {
            		$erreur = "Tout les champs sont obligatoires !";
            	}
            	
            }


            Merci de votre aide,

            Cordialement,

            • Partager sur Facebook
            • Partager sur Twitter
              28 juillet 2017 à 10:31:44

              $insert = $bdd->prepare("INSERT INTO membres VALUES (? , ? , ?)");
              $insert->execute(array($pseudo , $email , $mdp));
              • Partager sur Facebook
              • Partager sur Twitter
                28 juillet 2017 à 10:46:09

                Si tu utilises PDO, pourquoi ne pas utiliser complêtement par exemple pour protéger un minimum ta requete :
                $insert = $bdd->prepare("INSERT INTO membres VALUES (:pseudo , :email , :mdp)");
                $insert -> BindParam(":pseudo",$pseudo,PDO::PARAM_STR);
                $insert -> BindParam(":email",$email,PDO::PARAM_STR);
                $insert -> BindParam(":mdp",$mdp,PDO::PARAM_STR);
                $insert->execute();
                Syntaxe plus lourde, un peu plus longue dans l'execution mais facilite la réutilisation : voir ici.
                • Partager sur Facebook
                • Partager sur Twitter
                  28 juillet 2017 à 12:23:17

                  Merci à tous !

                  @kulturman Merci beaucoup. En effet, j'ai oublié le array. Maintenant ça marche.

                  @Zigomato Merci également, mais je souhaite simplifier un maximum le code de mon site. En effet, je suis non seulement flemmard, mais le site ne serra pas sujet à des cyberattaques. Niveau sécurité, je vais déjà mettre un bon cryptage, je pense que ce serra suffisant.

                  Je déclare ce post résolu ! :)

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Bug de connexion MySQL - PHP - PDO

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown