![]() |
Bienvenue invité ( Connexion | Inscription )
![]() |
![]()
Message
#1
|
|
![]() Macbidouilleur d'argent ! ![]() ![]() ![]() Groupe : Membres Messages : 792 Inscrit : 14 Nov 2003 Lieu : Genève Membre no 11 656 ![]() |
Bonjour,
J'ai un problème d'insertion dans une base de données mysql en PDO. Une insertion basique se faisant ainsi : Code $sql = "INSERT INTO users (id, name, surname) VALUES (?,?,?)"; $pdo->prepare($sql)->execute([$id, $name, $surname]); ... en inscrivant tous les champs et leurs valeurs. Comment insérer une ligne "vide" avec les valeurs par défaut de MySql ? Ceci ne fonctionnant pas : Code $sql = "INSERT INTO $table () VALUES ()"; $pdo->prepare($sql)->execute(); Note : Je suis sous sous php 7.3 D'avance, je vous remercie pour vos lumières ! |
|
|
![]() |
![]()
Message
#2
|
|
![]() Macbidouilleur d'argent ! ![]() ![]() ![]() Groupe : Membres Messages : 792 Inscrit : 14 Nov 2003 Lieu : Genève Membre no 11 656 ![]() |
@hellomorld : hélas, non... It doesn't work. J'espérais une solution du style et j'en ai essayé plein, mais on dirait qu'on ne peut pas faire aussi simple avec PDO+prepare
@jaypee : Je suis tombé sur cette page aussi de stackoverflow... Le souci est le même : c'est qu'il faut connaître les colonnes à l'avance et... En fait, je n'ai pas précisé... il faut que j'explique que c'est pour une classe : J'essayais de faire mon propre ORM (pour apprendre) et que j'utiliserais aussi en Ajax. Et je voulais pouvoir insérer des lignes complètement vides avec les valeurs par défaut de la base, le tout sans connaître au préalable les champs. (Donc seulement avec le nom de la table) pour l'utiliser par ex. ainsi : $object->insert(); Le mieux que j'ai trouvé, c'est de préalablement extraire toutes les valeurs par défaut des colonnes de la table avec une première requête comme : $query = $this->db->prepare("SHOW COLUMNS FROM `$table`"), puis une requête pour trouver le prochain id de la table, puis d'extraire des listes des champs et de chaque valeur par défaut avec une dernière requête ($sql = "INSERT INTO `$this->table` ($fields) VALUES ($values)"; $this->db->prepare($sql)->execute();) ..Mais c'est vraiment batard de faire 3 requêtes pour insérer une ligne vide ! ![]() ![]() |
|
|
![]() ![]() |
Nous sommes le : 18th July 2025 - 03:36 |