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

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 - 05:49