2009-08-16 6 views
1

Je dois faire une première requête qui est SELECT * from table WHERE NOT column=0, et utiliser les résultats de cela pour faire une boucle foreach quelque chose comme ci-dessous.Utiliser foreach pour mettre à jour des champs dans une base de données mysql basée sur une autre requête

foreach($results as $result) { 
$nox = $result[field_x]; 
//Use nox for whatever; 
//Then update some fields in SQL; } 

Et continuez jusqu'à ce que tous les éléments de la première requête soient terminés.

Quelle serait la syntaxe?

+0

Jésus-Christ ne pas me tenter, ce serait trop facile de fermer le couvercle sur l'ordinateur portable en ce moment – bluedaniel

Répondre

1

.

$sql = "SELECT * FROM `myTable` WHERE `column` = 0"; 

// query the database 
$resource = mysql_query($sql); 

// loop through the results 
while ($result = mysql_fetch_assoc($resource)) { 
    // grab the value 
    $nox = $result['field_x']; // you should use quotes here, btw 

    // make your modifications; 
    ++$nox; // or whatever 

    // build the query 
    $sql = sprintf(
     "UPDATE `myTable` SET `field_x` = %d WHERE `id` = %d" 
     , $nox 
     , $result['id'] 
    ); 

    // run the query 
    mysql_query($sql); 
} 
+0

ok merci, je suis vraiment pas être paresseux ou stupide, im paresseux, stupide et fatigué après une longue journée! – bluedaniel

+0

de base je sais mais le début serait: $ query = "SELECT * FROM table WHERE NOT field_x = 0"; $ results = Requête mysql ($ query); n'est-ce pas? – bluedaniel

+0

non - J'ai ajouté la syntaxe correcte ci-dessus maintenant. – nickf

0

Vous souhaitez simplement utiliser une simple commande update:

update tbl set field = '$value' where id = $id 

En PHP-ese:

$sql = 'update tbl set field = \'' . 
     mysql_real_escape_string($value) . '\' where id = ' . $id; 
mysql_query($sql); 
3

Sauf si vous avez un certain traitement exhaustif effectué en PHP, vous pouvez faire le plus probable que dans un seul multi-table UPDATE.

Par exemple:

UPDATE table1 t1 
    JOIN table2 t2 ON t2.id = t1.id 
    SET t1.col = t2.col + 1 
WHERE t1.somecol <> 0 
+0

c'est vraiment le traitement php étendu! C'est pourquoi je voulais m'assurer que ma façon de penser allait bien. Merci quand même – bluedaniel

Questions connexes