Tester l'existence d'un champs dans une table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tester l'existence d'un champs dans une table

Re: Tester l'existence d'un champs dans une table

par @rthur » 06 juil. 2018, 15:19

Bonjour,

Au sein de la requête même, je ne pense pas que ce soit possible.
En revanche, tu peux faire une requête juste avant pour vérifier l'existence de la colonne et donc construire ta requête différemment ensuite en fonction du résultat de ta vérification.

Pour la vérification, voici le format de la requête :
SHOW COLUMNS FROM table LIKE 'nom_colonne'
Si ça ne renvoie rien, c'est que la colonne n'existe pas, si ça renvoie une ligne, c'est que la colonne existe

Tester l'existence d'un champs dans une table

par swedge » 06 juil. 2018, 15:05

Bonjour à tous,

J'ai une requête SQL standard que j'utilise dans une boucle pour agréger les résultats de plusieurs BDD.
Les BDD concernées ont une structure à 99% similaire.

Voici la requête :

SELECT o.*, op.products_name
FROM orders o
LEFT JOIN products_description pd ON op.products_id = pd.products_id
WHERE o.sort_order = '5' AND (o.orders_id ='".$_POST['search']."' OR o.order_id_bis ='".$_POST['search']."' OR o.customers_email_address LIKE '%".$_POST['search']."%')

Le soucis provient du champs order_id_bis (en gras) qui est présent que dans certaines des BDD de ma boucle.
Du coup quand je lance cette requête j'ai une Fatal error dès que la boucle arrive sur une BDD n'ayant pas le champs.

J'aurais voulu savoir s'il était possible d'indiquer en Sql de faire le Where que si le champs existe dans la BDD.

En gros si la BDD ne contient pas ce champs, le Where sur ce champs ne se fait pas et il n'y a pas d'erreur retournée. Par contre si le champs existe dans la BDD on fait le Where.

J'espère avoir été le plus clair possible :D

Par avance merci pour votre aide.

Stephen