IPB

Bienvenue invité ( Connexion | Inscription )

> php PDO insert ligne avec valeurs par défaut ?
Options
toluol
posté 8 Jul 2019, 13:23
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 !
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
scoch
posté 11 Jul 2019, 11:00
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 933
Inscrit : 1 Jul 2010
Membre no 156 073



Citation (toluol @ 8 Jul 2019, 14:23) *
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();

Je viens de tester avec succès :
Code
$requete = $bdd->prepare('INSERT INTO machin() VALUES()');
$requete->execute();

$requete->closeCursor();

Les valeurs par défaut des champs sont bien appliquées aux champs de la nouvelle ligne.

Autre exemple pour insérer la valeur par défaut pour un seul champ :
Code
$requete = $bdd->prepare('INSERT INTO machin(prenom, nom, age) VALUES(:prenom, :nom, DEFAULT)');
$requete->execute(array(
    'prenom' => $prenom,
    'nom' => $nom
));

$requete->closeCursor();

Le champ "age" a bien la valeur par défaut.

Bien entendu, je ne me préoccupe pas de sécurité ici (voir le post de Jaypee).

Ce message a été modifié par scoch - 11 Jul 2019, 11:08.


--------------------
L'homme n'est que poussière... c'est dire l'importance du plumeau ! Alexandre Vialatte
Go to the top of the page
 
+Quote Post
toluol
posté 12 Jul 2019, 15:39
Message #3


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 792
Inscrit : 14 Nov 2003
Lieu : Genève
Membre no 11 656



Citation (scoch @ 11 Jul 2019, 11:00) *
Je viens de tester avec succès :


Je n'ai hélas pas le même résultat. Tu es en quelle version de php ?

Moi, c'est dans une classe, alors, ça donne ça :
Code
$requete = $this->db->prepare('INSERT INTO $this->table() VALUES()');
$requete->execute();
$requete->closeCursor();

Mais il n'y a pas de raison que ça change quelque chose...
Go to the top of the page
 
+Quote Post
scoch
posté 12 Jul 2019, 16:25
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 933
Inscrit : 1 Jul 2010
Membre no 156 073



Citation (toluol @ 12 Jul 2019, 16:39) *
Je n'ai hélas pas le même résultat. Tu es en quelle version de php ?

PHP 7.3.n
Je ne me souviens pas de la version exacte mais me suis conformé avec ta configuration en utilisant PHP 7.3. J’ai testé cela sur un PC du taff avec une installation par défaut de wamp.


--------------------
L'homme n'est que poussière... c'est dire l'importance du plumeau ! Alexandre Vialatte
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 18th July 2025 - 04:43