Specifikovat více než jednu položku v klauzuli WHERE

hlasů
1

Existuje nějaký způsob, jak bych mohl běžet následující ‚logický kód‘ vlastně funguje?

$sql=mysql_query(DELETE FROM users WHERE id='3,4,5,9');

Já v podstatě chtějí dát své uživatelské na zaškrtávací políčko zaškrtnout pro všechny zobrazené řádky, pak budou moci vybrat ty, které chcete odstranit. Já jen chci, aby se odstranily více než jeden řádek s id specifikovaných?

Nějaké nápady?

Položena 26/08/2009 v 23:03
zdroj uživatelem
V jiných jazycích...                            


6 odpovědí

hlasů
13

Můžete použít V operátor za to.

DELETE ... WHERE id IN (3,4,5,9)
Odpovězeno 26/08/2009 v 23:03
zdroj uživatelem

hlasů
5

Co takhle :

$sql=mysql_query("DELETE FROM users WHERE id IN (3, 4, 5, 9)");

předpokladu, že:

  • vaše IDS jsou číselné v DB
  • Chcete-li odstranit uživatele 3 a mazat uživatele 4 a mazat uživatele 5 a mazat uživatele 9

A samozřejmě, pokud vaše IDS jsou řetězce:

$sql=mysql_query("DELETE FROM users WHERE id IN ('3', '4', '5', '9')");

Pro více informací viz:

Odpovězeno 26/08/2009 v 23:04
zdroj uživatelem

hlasů
3

Použijte WHERE INklauzuli.

DELETE FROM users WHERE id IN (3, 4, 5, 9);
Odpovězeno 26/08/2009 v 23:04
zdroj uživatelem

hlasů
2
$sql=mysql_query("DELETE * FROM table WHERE id IN (3,4,5,9)");
Odpovězeno 26/08/2009 v 23:07
zdroj uživatelem

hlasů
2

Už jste se pokusil pomocí IN

DELETE FROM users WHERE id IN (3,4,5,9)

I když se v mých aplikacích jsem nikdy nic mazat. Místo toho jsem mít aktivní příznak, který lze nastavit na hodnotu false.

UPDATE users set active=0 where id in (3,4,5,9)

Všechny dotazy pak klauzuli kde pro active=1a 1 je výchozí hodnota pro aktivní příznak v tabulce.

Odpovězeno 26/08/2009 v 23:05
zdroj uživatelem

hlasů
2

Můžete použít inmísto =.

Např,

DELETE FROM users WHERE id IN (3,4,5,9);
Odpovězeno 26/08/2009 v 23:04
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more