使用foreach根据另一个查询更新mysql数据库中的字段

时间:2009-08-16 23:14:13

标签: php mysql loops foreach

我必须先进行SELECT * from table WHERE NOT column=0的第一个查询,并使用其中的结果执行类似下面的foreach循环。

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

并继续这样做,直到完成第一个查询中的所有项目。

语法是什么?

3 个答案:

答案 0 :(得分:3)

除非您在PHP中进行了大量处理,否则您很可能只需在multi-table UPDATE中进行一次处理。

例如:

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

答案 1 :(得分: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);
}

答案 2 :(得分:0)

您只需使用简单的update命令:

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

在PHP-ese中:

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