Bonjour,

Je voudrai fait une méthode qui effectue un INSERT INTO de manière dynamique.

J'ai regardé sur google et même ici mais c'est essentiellement sur des SELECT.
Moi c'est sur un insert et udpate.
Voici le code qui appel ma méthode.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
$bdd = bdd::getInstance();
 
                $valeur = array($nom, $prenom, $sexe, $birth, $mail, $adresse, $zip, $ville, $passDatabase, $newsletter);
 
                $cles = array("nom", "prenom", "sexe", "birth", "mail", "adresse", "zip", "ville", "pass", "optin");
 
                $valeurs = array('keys'=>$cles,'values'=>$valeur);
 
                $table = "users";
 
                $idInsert = $bdd->insert($valeurs,$table);
Et voici ma methode

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
16
 
public function insert($array,$table){
 
        $keys       = implode(", ", $array['keys']);
        $values     = implode("', '", $array['values']);
        $values     = "'".$values."'";
 
        $sql = "INSERT INTO $table ($keys) VALUES ($values)";
 
        $req = $this->bdd->prepare($sql);
 
        $req->execute();
 
        return $this->bdd->lastInsertId();
 
    }
Mais je sais que c'est pas du tout sécurisé, mais je coince au niveau de l'élaboration.
JE me suis dit, faut bien sur passé par des bindParam mais je ne peux pas changer le (:values) si j'en fais un.
Vous pouvez me dire mais c'est bon il faut juste casté ou sécurisé $values, mais j'ai pas envie d'avoir des htmlentities de partout et faire de html_entity_decode sur mes pages...

Alors si quelqu'un à une réponse ou je dois faire à chaque fois mes requête ?