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

时间:2017-03-09 12:30:06

标签: php mysql loops

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

方法一:获取数组中的所有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]);
}

这里generateCsv函数将调用200次并生成200个csvs

第二种方法:以逗号分隔从表中获取所有ID并传递给下面的函数

function generateCsv($ids) 
{
    $qry = "SELECT soem fields from the table where ids IN ('".$ids."')";
    // SOME CSV generation code will comes here.
}

那么在上面两种方法中哪一种最好?

1 个答案:

答案 0 :(得分:1)

最好的方法是不要循环。 Mysql具有生成CSV的优秀功能。它被称为SELECT INTO OUTFILE

  

SELECT ... INTO OUTFILE将选定的行写入文件。专栏和   可以指定行终止符以生成特定的输出格式。

生成文件后。考虑使用SFTP或其他安全协议来传输文件,而不是使用以明文形式发送passowrds的FTP。