php - valeur - select html



Exécuter un select sur une liste de valeurs séparées par des virgules en PHP (1)

Pourquoi les gens insistent-ils sur cette habitude folle de valeurs de données séparées par des virgules dans une colonne plutôt que de normaliser correctement leur conception de base de données. Cela conduit toujours à des problèmes.

SELECT * 
  FROM $tbl_name 
 WHERE CONCAT(',',People,',') LIKE '%,".$selection.",%'";

ou

SELECT * 
  FROM $tbl_name 
 WHERE FIND_IN_SET(".$selection.",People);

J'ai un peu de mal à exécuter une requête select sur une base de données. Certaines données sont conservées sous forme de liste de valeurs séparées par des virgules, par exemple:

Table: example_tbl
| Id | People | Children |
| 1  | 1,2,3  |  8,10,3  |
| 2  | 7,6,12 |  18,19,2 |

Et un exemple du genre de chose que j'essaie de lancer:

<?php
    include 'class.php';
    $selection = 1;
    $db = new DbClass;
    $tbl_name = 'example_tbl';
    $sql = "SELECT * FROM $tbl_name WHERE ".$selection." IN People";
    $result = $db->query($sql);
    $print_r($result);
?>

Le script ci-dessus devrait retourner la ligne 1 après avoir trouvé un '1' dans la colonne People mais clairement je l'ai jeté.

Le problème que je pose est que je pense avoir la déclaration IN à rebours, c'est-à-dire que je pense que cette méthode serait de sélectionner des valeurs si $ selection était une liste séparée par des virgules (implosée) plutôt que la façon dont j'essaie de l'utiliser.

Je ne sais pas si c'est trop important sur ce que j'envoie et reçois de la classe db ci-dessus, mais si vous voulez savoir, c'est juste un script simple qui exécute tous les bits pertinents et retourne un tableau du résultat. pour le moment il ne retourne rien parce qu'il ne trouve pas de correspondance

Merci d'avance pour tout ce que vous pouvez me dire.

À la vôtre -Dave





csv