![]() |
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'Or ! ![]() ![]() ![]() ![]() ![]() Groupe : Membres Messages : 2 486 Inscrit : 29 Aug 2002 Membre no 3 340 ![]() |
D'une manière ou d'une autre, si on veut se protéger contre l'injection SQL, il faut pouvoir accepter ou rejeter un couple (nom de colonne, valeur), et donc connaître les noms de colonne valides.
https://phpdelusions.net/pdo/sql_injection_example Dans les premières versions de MS SQL Server, on pouvait attaquer la db à travers le champ "Username" de la page de login, il ne faut jamais négliger la sécurité. C'est un peu la responsabilité de l'ORM de faire le "sale boulot" pour faciliter le travail du développeur final, alors une ou trois requêtes, où est le problème ? Ensuite dans ton approche, il faut penser aussi aux implications de l'intégrité provisoire de la db, puisque la rangée vide peut être lue avant d'être complétée avec des valeurs, sauf si l'ORM. gère sa propre colonne "ready", et fait un "AND" implicite dessus. Il y a un exemple unique de ce genre de "découverte" de la structure de la db par le code client, il s'agit des « Type Providers » de F# de Microsoft, repris plus tard par Scala. C'est une technologie de niche, peu connue. L'intérêt est qu'on peut "exposer" juste quelques colonnes au client et construire un service dessus sans besoin que le client en sache plus sur le reste de la db. La même db peut être vue comme une source de "Personne" pour une application, ou source de "Produit" pour une autre. https://docs.microsoft.com/en-us/dotnet/fsh...type-providers/ @+JP Ce message a été modifié par Jaypee - 11 Jul 2019, 09:38. |
|
|
![]() ![]() |
Nous sommes le : 18th July 2025 - 04:40 |