Page 1 sur 1

Fatal error: Call to a member function execute()

Posté : 05 sept. 2016, 19:15
par d4rK
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>

Re: Fatal error: Call to a member function execute()

Posté : 05 sept. 2016, 20:29
par or 1

Re: Fatal error: Call to a member function execute()

Posté : 06 sept. 2016, 12:16
par Ryle
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 ;)

Re: Fatal error: Call to a member function execute()

Posté : 07 sept. 2016, 17:21
par captain_flame
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 ;)

Re: Fatal error: Call to a member function execute()

Posté : 07 sept. 2016, 17:30
par captain_flame
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.