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)
Jaypee
posté 13 Jul 2019, 09:34
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Le pattern qui est implémenté ici est l'ActiveRecord (popularisé par Ruby On Rails) et il existe déjà plusieurs bibliothèques PHP qui apportent ce pattern aux objets d'une appli. Même si le but est de ne pas les utiliser, on peut quand même s'en inspirer.

Dans le cas présent, ça veut dire que la compétence d'accès à la db peut être héritée d'une classe comme celle-là.
Ou alors, si la simplicité est une priorité, il faudrait initialiser l'objet PDO au niveau global (hors de la classe) en tant que singleton (pas d'autre instance permise), puis l'injecter dans le constructeur de l'objet de l'appli.

On peut en effet se heurter sans le savoir à un problème de licence qui ne permet qu'un seul accès à la bd, et toujours sans le vouloir, créer deux accès distincts par deux objets différents. C'est le but du singleton, que de s'assurer que tous les accès soient centralisés par un seul connecteur.
Une autre piste : En mode développement on peut essayer une requête, qui échoue, le code s'arrête immédiatement sans restituer les ressources systèmes allouées pour le test (des connexions). Il est important de l'enrober dans un try except, et s'assurer que la connexion de db est bien refermée après l'erreur.

@+JP

Ce message a été modifié par Jaypee - 14 Jul 2019, 14:55.
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 : 2nd July 2025 - 06:59