Foreach dans une requette sql
roger
-
Rincewind -
Rincewind -
Bonjour,
je souhaite réduire mon code au maximum et je me suis rendu compte que pour modifier ou ajouter des données dans ma bdd je fesais plusieurs requette similaire pour chacune de mes tables. En fait, il n'y a que les paramètres qui changent.
du coup, je me suis dis, pourquoi ne pas créer qu'une seul requette don les paramètres seraient contenus dans des variables.
Voici l'idée:
Voila, je ne sais pas si ce que je veux faire est possible, toujours est-il que j'ai une faute à la ligne 14. Peut être une faute de concaténation, ou alors peut être que ce code est complètement faut et irréalisable, je ne sais pas.
Merci à tous.
je souhaite réduire mon code au maximum et je me suis rendu compte que pour modifier ou ajouter des données dans ma bdd je fesais plusieurs requette similaire pour chacune de mes tables. En fait, il n'y a que les paramètres qui changent.
du coup, je me suis dis, pourquoi ne pas créer qu'une seul requette don les paramètres seraient contenus dans des variables.
Voici l'idée:
class RequetteBdd extends Bdd { private $tract = array('nom', 'taille', 'emplacement', 'url', 'alt'), $image = array('inom', 'iidb', 'isujet', 'itaille', 'iemplacement', 'ialt'), $son = array('snom', 'sidb', 'ssujet', 'staille', 'semplacement', 'salt'), $video = array('vnom', 'vidb', 'vsujet', 'vtaille', 'vemplacement', 'valt'), $photoAcceuil = array('nom', 'idb', 'sujet', 'taille', 'emplacement', 'alt'); public function ajouter($table) { $req = $this -> bdd -> prepare('INSERT INTO ' .$table.' SET '.foreach($this -> $table as $key => $value) // ligne 14 { $value = '?'; }. ' date = NOW()'); $req -> execute(array(foreach($this -> $table as $key => $value) { $table -> $value(); })); } }
Voila, je ne sais pas si ce que je veux faire est possible, toujours est-il que j'ai une faute à la ligne 14. Peut être une faute de concaténation, ou alors peut être que ce code est complètement faut et irréalisable, je ne sais pas.
Merci à tous.
A voir également:
- Foreach dans une requette sql
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
1 réponse
Salut,
ne mélangez pas SQL et PHP.
SQL est simple comme langage, il ne permet pas tout mais tout est possible pour les requêtes que vous effectuez.
Plus vos requêtes sont précises plus votre programme est efficace
En SQL pas de for each ou de structure semblable(SQL est dit un langage de bas niveau) mais vous pouvez par contre faire autant de sous-requête qu'il est possible et que vous pouvez comprendre.
Une sous-requête est une requête comprise dans une autre.
Si vous utilisez for each du php c'est que votre requête est mal faite: cela revient à faire plusieurs requêtes d'affilée plutôt que d'obtenir tout en une seule requête(sous-requête comprises) et donc le traitement et la charge serveur s'en trouve alourdit d'autant de 'tours' que vous avez dans votre boucle PHP.
En gros c'est comme si vous passiez à la caisse du supermarché et que vous fassiez une facture différente pour chaque article, multipliez cela par autant de clients/utilisateurs du site et vous êtes pas pris d'avoir finit vos courses, la queue pour passer (et la pauvre caissière/base de données) s'en sortiront pas...
ne mélangez pas SQL et PHP.
SQL est simple comme langage, il ne permet pas tout mais tout est possible pour les requêtes que vous effectuez.
Plus vos requêtes sont précises plus votre programme est efficace
En SQL pas de for each ou de structure semblable(SQL est dit un langage de bas niveau) mais vous pouvez par contre faire autant de sous-requête qu'il est possible et que vous pouvez comprendre.
Une sous-requête est une requête comprise dans une autre.
Si vous utilisez for each du php c'est que votre requête est mal faite: cela revient à faire plusieurs requêtes d'affilée plutôt que d'obtenir tout en une seule requête(sous-requête comprises) et donc le traitement et la charge serveur s'en trouve alourdit d'autant de 'tours' que vous avez dans votre boucle PHP.
En gros c'est comme si vous passiez à la caisse du supermarché et que vous fassiez une facture différente pour chaque article, multipliez cela par autant de clients/utilisateurs du site et vous êtes pas pris d'avoir finit vos courses, la queue pour passer (et la pauvre caissière/base de données) s'en sortiront pas...