Maison > Questions et réponses > le corps du texte
L'interrogation des domaines d'expertise (stockés sous forme de tableau d'éléments sélectionnés) ne fonctionne pas. J'essaie de trouver un moyen d'obtenir les domaines d'expertise des agriculteurs enregistrés lors de l'édition.
J'ai deux tables. Tableau des agriculteurs inscrits et tableau des champs professionnels dans la base de données.
Les champs professionnels sont stockés dans la table des champs professionnels.
Le tableau des agriculteurs enregistrés contient toutes les données des agriculteurs enregistrés.
Voici la table du terrain professionnel :
area_of_expertise_id | id_number_of_the_farmer | domaines_d_expertise | register_farmer_id |
---|---|---|---|
1 | 23232223 | Culture | 1 |
2 | 23233453 | Récolte | 2 |
Formulaire d'agriculteur enregistré :
register_farmer_id | nom_du_fermier | âge_of_the_farmer |
---|---|---|
1 | Anonyme | 23 |
2 | Mary Doe | 34 |
Je souhaite avoir un identifiant d'agriculteur inscrit dans la table des champs professionnels tout comme dans la table des agriculteurs inscrits. Je suppose que ce sera une clé étrangère.
J'essaie d'interroger tous les domaines d'expertise d'un certain agriculteur. Les données interrogées seront affichées sur sa page pour édition.
Stocker les données dans les domaines professionnels fonctionne bien. J'utilise la boucle foreach pour stocker des données. Le problème est maintenant d'interroger les données.
S'il vous plaît, aidez-moi.
P粉0601123962024-04-05 12:46:13
Vous devrez peut-être trop réfléchir à la conception de votre table car cela ressemble à une relation 1:n classique (même si c'est 1:1, les informations ne changent pas)
Essayez ceci :
Farmers: ID (PRIMARY, AutoIncrement), name, age Expertises: farmerID (index), areaOfExpertise
Insérez ce qui suit (en supposant des déclarations préparées) :
INSERT INTO `farmers` VALUES (NULL, ?, ?)`
Ensuite, vous récupérez le "Last Insert ID" de la connexion active et le placez dans le deuxième tableau.
INSERT INTO `expertise` VALUES (?, ?)
Pour récupérer des informations, vous devez faire l'inverse. Pour récupérer tous les agriculteurs, vous pouvez utiliser la requête
SELECT * FROM `farmers`
Et, pour obtenir uniquement des agriculteurs spécifiques (en supposant que vous ayez la pièce d'identité), vous pouvez utiliser :
SELECT * FROM `farmers` WHERE ID = ?
Que vous consultiez tous les agriculteurs ou un seul agriculteur, lors de l'évaluation des informations, vous accéderez à des domaines d'expertise tels que :
SELECT * FROM `expertise` WHERE farmerID = ?
C’est de ça qu’il s’agit. En supposant une relation 1:1 (du type « Chaque agriculteur n'a qu'un seul domaine d'expertise »), vous pouvez également l'écrire d'un seul coup comme ceci :
SELECT * FROM `farmers`, `expertise` WHERE ID = ? and farmerID = ID;