Autor Zpráva
Usinaxek
Profil *
Potřebuji kontrolovat data v mySQL a právě jsem zjistil, že atribut='2' AND atribut='3' není vůbec totéž jako atribut IN (2,3).
Problém je, že potřebuji, aby podmínku splnili oba dva, tj. jak atribut='2', tak i atribut='3'.

V čem je tedy problém? Data mám v array() a pro výpis mně napadl jen implode, jenže jen nezvládne atribut='' AND atribut='' .... V array() samozřejmě může být jeden nebo i deset různých čísel.

Poradíte jak na to?
anonymníí
Profil *
Usinaxek:
Buď použij OR místo AND, nebo čistčí IN.

... WHERE atribut IN (2, 3)
Dan Charousek
Profil
Usinaxek:
První varianta podmínky (atribut = 'x' AND atribut = 'y') je už z logického hlediska vždy nepravdivá. Atribut přeci nemůže mít zároveň hodnotu 'x' a 'y'
Jak správně uvádí anonymníí, stačí použít OR nebo IN (který bych také doporučil). V kombinaci s implode() to je otázka pár řádků:

$data = [1, 2, 3, 4];
$sql = "SELECT * FROM table WHERE atribut IN (" . implode(", ", $data) . ")"; // můžeš si zkusit dotaz vypsat, abys věděl, jak se poskládal.
$query = $mysqli->query($sql);
Alphard
Profil
Usinaxek:
Problém je, že potřebuji, aby podmínku splnili oba dva, tj. jak atribut='2', tak i atribut='3'.
Možná hledáte Diskuse JPW: Některé časteji řešené dotazy pro MySQL - FAQ » Nalezení položek mající všechny hledané vlastnosti.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: