[RESOLU] Fatal error: Call to a member function execute()

d4rK
Invité n'ayant pas de compte PHPfrance

05 sept. 2016, 19:15

je veux créer un espace membres tout marche jusqu’à ce que l'on clique sur le bouton s'inscrire j'en est donc déduis que cela venez de la requête.
voila le message d'erreur en entier : Fatal error: Call to a member function execute() on string in D:\UwAmp\www\my-app\index.php on line 24

et voici mon code complet aussi (petite précision j'utilise UWamp pour traduire le php et en base de données SQL) :
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', 'root');

if(isset($_POST['forminscription']))
{
    $pseudo = htmlspecialchars($_POST['pseudo']);
    $mail = htmlspecialchars($_POST['mail']);
    $mail2 = htmlspecialchars($_POST['mail2']);
    $mdp = sha1($_POST['mdp']);
    $mdp2 = sha1($_POST['mdp2']);

    if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
    {
        $pseudolength = strlen($pseudo);
        if($pseudolength <= 255)
        {
            if($mail == $mail2)
            {
                if(filter_var($mail, FILTER_VALIDATE_EMAIL))     
                {  
                    if($mdp == $mdp2)
                    {
                        $insertmbr = ("INSERT INTO membres (pseudo, mail, motdepasse) VALUES (?, ?, ?)");
                        $insertmbr->execute(array($pseudo, $mail, $mdp));
                        $erreur = "Votre compte a bien été créer !";
                        }
                    }
                    else
                    {
                        $erreur = "Vos mot de passe ne correspondent pas";
                    }
                }
                else
                {
                    $erreur = "Votre email n'est pas valide";
                }
            }
            else
            {
                $erreur = "Vos adresse emails ne correspondent pas";
            }
        }
        else
        {
            $erreur = "Votre pseudo ne doit dépassé 255 caratères ";
        }

    }
    else
    {
        $erreur = "Tous les champs doivent êtres complétés";
    }
}

?>
<html>
    <head>
        <title>TUTO PHP</title>
        <meta charset="utf-8" />
    <head>
    <body>
        <div align="center">
            <h2>Inscription</h2>
            <br /><br />
            <form method="POST" action ="">
                <table>
                    <tr>
                        <td align="right">
                            <label for="pseudo">pseudo : </label>
                        </td>
                        <td>
                            <input type="text" placeholder="votre pseudo" id="pseudo" name="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>"/>
                        </td>
                    </tr>

                    <tr>
                        <td align="right">
                            <label for="mail">mail : </label>
                        </td>
                        <td>
                            <input type="email" placeholder="votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>"/>
                        </td>
                    </tr>

                    <tr>
                        <td align="right">
                            <label for="mail2">confirmation du mail : </label>
                        </td>
                        <td>
                            <input type="email" placeholder="comfirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>"/>
                        </td>
                    </tr>

                    <tr>
                        <td align="right">
                            <label for="mdp">mot de passe : </label>
                        </td>
                        <td>
                            <input type="password" placeholder="votre mot de passe" id="mdp" name="mdp" />
                        </td>
                    </tr>

                    <tr>
                        <td align="right">
                            <label for="mdp2">confirmation du mot de passe : </label>
                        </td>
                        <td>
                            <input type="password" placeholder="comfirmez votre mot de passe" id="mdp2" name="mdp2" />
                        </td>
                    </tr>
                    <tr>
                        <td> </td>
                        <td>
                            <br />
                            <input type="submit" name="forminscription" value="je m'inscrit" />                                
                        </td>
                    </tr>
            </form>  
            <?php
            if(isset($erreur))
            {
            echo $erreur;
            }
            ?>                        
        </div>        
    </body>
</html>

Mammouth du PHP | 2703 Messages

05 sept. 2016, 20:29


Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 sept. 2016, 12:16

Bonjour,

Il te manque effectivement un petit quelque chose pour préparer la requête à exécuter...
Actuellement tu stockes directement ta requête dans la variable $insertmbr qui est du coup juste une chaîne de caractères et pas un objet PDO exécutable ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

07 sept. 2016, 17:21

ok merci (je me suis créer un compte et du coup j'ai pas le même pseudo) je débute alors je fait pas mal d'erreur ;)

Petit nouveau ! | 2 Messages

07 sept. 2016, 17:30

ok merci (je me suis créer un compte et du coup j'ai pas le même pseudo) je débute alors je fait pas mal d'erreur ;)
encore merci vous me sauver le vie maintenant ça marche super.