Partage
  • Partager sur Facebook
  • Partager sur Twitter

sql: where id != array

Sujet résolu
    16 octobre 2020 à 22:27:48

    Bonsoir,

    j'essaye d'avoir une requete sql qui dit prend tous ces utilisateurs, sauf cette array... :

        $p = [111,119];
        $r = $db->prepare('SELECT * FROM test_ins WHERE id != :a');
        $r->bindValue(':a', $p);
        $r->execute();

    Bon, ça ça ne marche pas... mais je crois que voue avez compris... 

    Du coup bah vu que je suis encore le seul a avoir cette idée sur internet ( vu que je suis Albert Einstein aussi ... ), eh bien je ne trouve rien...

     Merci... 

    • Partager sur Facebook
    • Partager sur Twitter

    Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.

      16 octobre 2020 à 22:35:38

      Salut

      Ce que tu recherches, c'est l'opérateur IN (…), que tu peux combiner avec un NOT devant.

      Par contre, tu vas devoir changer un peu la manière de construire la requête, parce qu'il n'est pas possible de passer un tableau pour un marqueur.

      Plusieurs exemples et explications sont disponibles sur le forum.

      • Partager sur Facebook
      • Partager sur Twitter
        16 octobre 2020 à 22:59:52

        Oui j’avais vu le IN() en cherchant sur internet... mais :


        Mais je ne peux pas faire sans array... parce que ce que j’essaye de faire c’est ça :

        - avec ajax, je viens chercher ma page php pour la requete sql, qui cette requete sql contient donc l’array envoyé par ajax coté client...

        Donc ça veut dire que les valeurs change constamment.. pour le where ... 

        Comment faire alors ?

        • Partager sur Facebook
        • Partager sur Twitter

        Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.

          16 octobre 2020 à 23:44:11

          Tu construis la requête en concaténant non pas les valeurs, mais le nombre de marqueurs nécessaires, et tu utilises le tableau en paramètre de execute(), par exemple, ou alors tu boucles sur les valeurs pour les lier une à une.

          • Partager sur Facebook
          • Partager sur Twitter
            17 octobre 2020 à 12:07:42

            $r = $db->query('SELECT * FROM test_ins WHERE id NOT IN(' . implode(', ', array_map('intval', $p)) . ')');
            • Partager sur Facebook
            • Partager sur Twitter
              17 octobre 2020 à 12:40:47

              ah oui... c'est pas bête...

              Bien je vous remercie Ymox et julp.. Problème résolu !

              Bonne journée !

              • Partager sur Facebook
              • Partager sur Twitter

              Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.

              sql: where id != array

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown