2009-08-16 6 views
1

Ich habe eine erste Abfrage, die SELECT * from table WHERE NOT column=0 ist, und verwenden Sie die Ergebnisse daraus, um eine foreach-Schleife etwas wie unten zu tun.Verwenden von foreach zum Aktualisieren von Feldern in einer MySQL-Datenbank basierend auf einer anderen Abfrage

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

Und weiter so, bis alle Elemente in der ersten Abfrage abgeschlossen sind.

Was wäre die Syntax?

+0

Jesus Christus mich nicht in Versuchung führt, wäre es einfach zu leicht sein, den Deckel auf dem Laptop schließen jetzt – bluedaniel

Antwort

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 danke, ich bin wirklich nicht faul oder dumm, im nur faul, dumm und müde nach einem langen Tag! – bluedaniel

+0

Basic Ich weiß, aber der Start wäre: $ query = "SELECT * FROM Tabelle WHERE NOT field_x = 0"; $ results = mysql_query ($ query); richtig? – bluedaniel

+0

Nein - Ich habe jetzt die korrekte Syntax oben hinzugefügt. – nickf

0

Sie würden nur einen einfachen update Befehl:

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

In PHP-ese:

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

Wenn Sie in PHP getan einige umfangreiche Verarbeitung haben, können Sie wahrscheinlich tun, dass in einem einzigen, multi-table UPDATE.

Zum Beispiel:

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

es ist wirklich umfangreiche PHP-Verarbeitung! Deshalb wollte ich sicherstellen, dass meine Art zu denken in Ordnung war. Danke trotzdem – bluedaniel

Verwandte Themen