Php 在mysql表上迭代循环的最佳方法是什么

Php 在mysql表上迭代循环的最佳方法是什么,php,mysql,loops,Php,Mysql,Loops,例如,我在一个表中有200条记录。我的要求是我需要获取这200条记录并生成csv文件。然后,它将被发送到指定的ftp文件夹。这只是一个exmaple,但通常最好的方法是: 方法一:获取数组中的所有ID并获取数组计数,迭代for循环并调用函数 $ids_array = array which stores all the id from the related table. $array_cnt = count($ids_array); for($i=0;$i<$array_cnt;$i++

例如,我在一个表中有200条记录。我的要求是我需要获取这200条记录并生成csv文件。然后,它将被发送到指定的ftp文件夹。这只是一个exmaple,但通常最好的方法是:

方法一:获取数组中的所有ID并获取数组计数,迭代for循环并调用函数

$ids_array = array which stores all the id from the related table.
$array_cnt = count($ids_array);
for($i=0;$i<$array_cnt;$i++)
{
    generateCsv($ids_array[$i]);
}

因此,在上述两种方法中,哪一种是最好的?

最好的方法是根本不循环。Mysql在生成CSV中内置了出色的功能。它叫

选择。。。将所选行写入OUTFILE,并将其写入文件。列和 可以指定行终止符以生成特定的输出格式


生成文件后。考虑使用SFTP或其他安全协议来传输文件,而不是使用以明文发送PasrOrdRs的FTP。< / P> OK,这里生成CSV只是一个例子。但一般来说,我有一些更新操作等。。。一般情况下,最佳方案是什么?我已经回答了您提出的问题。这个答案是正确的,你的评论太宽泛了。请发布一个具体的后续问题。如果您能将此答案标记为正确,则表示感谢,因为它充分且正确地回答了您发布的原始问题。谢谢你需要单独取身份证吗?你能不能不在原始选择中做一个连接来获取所有细节?但是您的第一种方法似乎建议您对每个id进行单独的选择,这将非常缓慢。第二种方法依赖于足够小的ID数量,以使IN子句能够处理它(这不是MySQL的主要问题,但对于其他风格的SQL来说可能是个问题)
function generateCsv($ids) 
{
    $qry = "SELECT soem fields from the table where ids IN ('".$ids."')";
    // SOME CSV generation code will comes here.
}