2009-07-29 10 views
1

Voici ce que j'essaie de faire: Mettre à jour un nombre arbitraire de lignes, en remplaçant plusieurs champs par la même valeur.Mise à jour de plusieurs lignes Mysql à partir de php

$var = "1 3 5 7 9"; 
$query = "UPDATE tablename SET seen_before = 1 WHERE id = SET ($var);" 

Ma question est la suivante: Quelle est la syntaxe exacte sur la clause Where quand je Lookin dans un ensemble, et comment dois-je passer dans l'ensemble des éléments à travers une variable php.

Merci,
Michael

Répondre

6
$ids = "1, 3, 5, 7, 9"; 
$query = "UPDATE tablename SET seen_before = 1 WHERE id IN ($ids)"; 

Si vos ID sont dynamiques, et ils sont probablement utiliser quelque chose comme ceci afin d'échapper correctement pour une requête SQL:

// Assuming $ids it's coming from an untrusted source, like $_GET 
$ids = array(1, 3, 5, 7, 9); 
$ids = array_map('intval', $ids); 
$ids = implode(', ', $ids); 

$query = "UPDATE tablename SET seen_before = 1 WHERE id IN ($ids)"; 
+0

@Ionut : vous devez fixer $ ids ou $ var. – hobodave

+0

Merci @hobodave, corrigé. –

+0

Merci, ma contribution a dû être «trim». Est-ce que IN ne fonctionne que sur une chaîne? – Dirk

Questions connexes