J'ai trouvé quelques questions similaires posées mais aucune d'entre elles ne semble être proche de ce que j'essaie de faire.
question: strong> p> J'ai un PHP Code qui recherche la base de données MySQL et renvoie les données en fonction de l'emplacement des utilisateurs (Lat / Long). Et il imprime les données comme JSON. (cela fonctionne bien et comme il le devrait). p> Le code ressemble à ceci: p> maintenant, j'ai besoin d'ajouter un autre paramètre de recherche à la au-dessus de la requête. Ce paramètre est un tableau créé par des cases à cocher cochées et on ressemble à ceci: p> donc, j'envoie ce paramètre supplémentaire à ma page PHP comme tous les autres paramètres via Ajax et Je reçois la matrice dans mon php comme: p> mais je ne sais pas comment je peux ajouter ce paramètre supplémentaire à ma requête actuelle afin que mon PHP renvoie des données basées sur la Valeur dans ce tableau. P> J'ai essayé quelque chose comme ça qui ne fonctionne pas: p> ceci Quelqu'un pourrait-il faire une question de conseil sur cette question? P> Je l'ai essayé tous les sens en vain. J'ai même essayé comme ça et je n'ai toujours pas reçu de résultats de la base de données: P> où les catégories = '$ filtres' est faux. p>
$sql ="SELECT b.*
FROM businesses b
ORDER
BY -- great circle distance calculation
( 3959 * ACOS( COS( RADIANS('" . $latitude2. "') )
* COS( RADIANS( b.lat ) )
* COS( RADIANS( b.lon )
- RADIANS('" . $longitude2 . "')
)
+ SIN( RADIANS('" . $latitude2 . "') )
* SIN( RADIANS( b.lat ) )
)
) ASC WHERE FIND_IN_SET(b.categories, 'Toys, Restaurants, Hotel') LIMIT 4";
3 Réponses :
Il pourrait être bon de simplement exécuter une telle requête pour voir ce qui se passe - probablement, vous auriez reçu un message d'erreur vous indiquant que le où la clause code> devrait se produire
par code> p>
Mais le problème est que je ne fais rien avec le tableau que je reçois dans mon PHP. Je ne pense pas que toute la requête a raison car PHP ne peut pas rechercher la base de données MySQL comme ceci: où catégories = '[{"Titre": "Toys"}, {"Titre": "Restaurants"}, {" E ":" hotel "}, {" Titre ":" Animaux "}, {" Titre ":" Un ccounting "}] ' code>
Je ne sais pas ce que vous entendez par là, mais la fixation de votre requête pourrait être un bon début. Et si vous pensez que l'insertion de la chaîne soit directement fausse, ce qui vous empêche de le changer de telle sorte qu'il ne soit plus faux? Je n'ai aucune idée de votre structure de base de données
Ce que je voulais dire, c'est que le problème n'est pas en positionnant la clause où vous l'avez suggéré.
Mais vous avez raison ... c'est l'un des problèmes. toujours rien de retour!
Maintenant, tout fonctionne. Un mélange de votre suggestion et @nadir Latif, j'ai réussi à le faire fonctionner.
Essayons p> où dans code> est ce dont vous avez besoin
où id in ('". $ tury."') ""); code> p>
Pouvez-vous expliquer cela plus loin? $ Array code> ne se produit pas dans le code partagé par James
Bien utiliser est une bonne option. Mais il doit être `Où les catégories dans ('Catégorie1, Catégorie2, Catégorie3'), car nous vérifions les catégories et non ID. Voir: W3RESource.com/mysql/comparision-fonctions- et-opérateurs / ... . Aussi les arguments nécessaires à la liste des catégories de format à la chaîne
La variable de filtres contient une chaîne JSON. Vous devez le convertir en array PHP à l'aide de JSON_Decode . < P> Après cela, obtenez les valeurs de chaque titre. Suivant Utilisez la fonction MySQL Find_in_set . Par exemple: p>
Puis-je faire $ filters = json_decode ($ _ obtenir ["Filtres ']); code>, puis
où recherche_in_set (catégories, $ filtres') code>?
Eh bien utiliser json_decode ($ _ obtenir ["filtres '], vrai). Il retournera un tableau. Ce tableau contient des tableaux dans le format "Titre" => "Quelque titre". Vous devez donc utiliser une boucle pour obtenir la valeur du titre. Mettre chaque titre dans un tableau. Suivant Convertir ce tableau en chaîne en utilisant $ string = implorez ("", $ tury). Vous pouvez utiliser cette chaîne dans la requête SQL. Par exemple: où Find_in_set (catégories, $ String)
Votre colonne Catégories MySQL contient-elle une valeur unique ou plusieurs valeurs?
@Nadirlatif, valeurs simples. Exemple: l'un a des restaurants et l'un a un hôtel et ainsi de suite.
@Dharman, ce n'est pas mon code. C'est un code que je travaille écrit par quelqu'un d'autre. pourrait passer à PS à l'avenir.