2009-08-16 65 views
1

我必须做第一个查询是SELECT * from table WHERE NOT column=0,并使用它的结果做一个foreach循环,如下所示。使用foreach更新基于另一个查询mysql数据库中的字段

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

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

语法是什么?

+0

耶稣基督不要引诱我,那就太容易盖上盖子上的笔记本电脑,现在 – bluedaniel 2009-08-16 23:21:30

回答

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

好,谢谢,我真的不是懒惰或愚蠢,我只是懒惰,经过漫长的一天后,你会觉得很蠢! – bluedaniel 2009-08-16 23:25:29

+0

基本我知道,但开始将是: $ query =“SELECT * FROM table WHERE NOT field_x = 0”; $ results = mysql_query($ query); 对不对? – bluedaniel 2009-08-16 23:31:57

+0

nope - 我已经在上面添加了正确的语法。 – nickf 2009-08-16 23:46:59

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); 
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 
+0

这真的是广泛的PHP处理!这就是为什么我想确保我的思维方式是好的。不管怎么说,还是要谢谢你 – bluedaniel 2009-08-16 23:30:23

相关问题