2012-01-12 54 views
0

我有一个查询下面我从我的数据库中选择一个ID,然后用1更新该ID的字段以指示此记录已被处理。我现在需要执行相同的过程,但选择50个ID并以CSV格式输出它们,并再次用1更新每条记录以表明这些记录已被处理。任何帮助表示赞赏,我不知道最有效的方法来做到这一点。MySQL输出CSV和从CSV更新

$result = mysql_query("SELECT `id` FROM `t_ids` WHERE `f_fetched` IS null LIMIT 1"); 
while($row = mysql_fetch_array($result)) 
$f_id = $row['id']; 
mysql_query("UPDATE t_ids SET f_fetched = '1' WHERE id = '$f_id'"); 
+0

你可能需要'fputcsv'写。和查询中的“LIMIT 50”是否有帮助,如果不是,那么确切的问题是什么? – Wrikken 2012-01-12 23:25:14

回答

0

你可以使用类似这样

$result = mysql_query("SELECT `id` FROM `t_ids` WHERE `f_fetched` IS null LIMIT 50"); 
$processed_ids = array(); 
while($row = mysql_fetch_array($result)) 
{ 
    //do whatever processing you need to with that id 

    //add the id to the $processed_ids array 
    $processed_ids[] = $row['id']; 
} 

$ids = implode(",", $processed_ids); //create a comma-delimited string of ids. 

//update all rows in 1 query 
mysql_query("UPDATE t_ids SET f_fetched = '1' WHERE id IN ($ids)"); 
0

为什么不直接使用:

mysql_query("UPDATE t_ids SET f_fetched = '1' WHERE `f_fetched` IS null"); 
+0

我认为这可能只是将所有未处理的记录设置为1,而不管它们是否已被处理。尽管感谢您的建议。 – WAUS 2012-01-13 02:24:24

+0

您的示例中没有处理。 – 2012-01-13 02:45:43