Başka bir sorguya dayalı bir mysql veritabanı alanları güncelleştirmek için foreach

3 Cevap php

I SELECT * from table WHERE NOT column=0 bir ilk sorgu yapmak, ve aşağıdaki gibi bir foreach döngüsü bir şeyler yapmak olduğunu sonuçlarını kullanmak zorunda.

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

Ve ilk sorguda tüm öğeleri yapılır kadar bunu yapmaya devam.

Sözdizimi ne olurdu?

3 Cevap

.

$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);
}

Bazı geniş işleme PHP yapmış sürece büyük olasılıkla bir tek, içinde multi-table UPDATE yapabilirsiniz.

Örneğin:

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

Sadece basit bir update komutunu kullanmak istiyorum:

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

PHP-DGD:

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