从MySQL CSV导出中排除列

时间:2012-07-05 15:41:44

标签: php mysql csv

我正在尝试添加一个函数,该函数将创建一个csv,以便从db中的某个表下载。我已经部分工作,但无法弄清楚如何从csv的行部分中排除某些列。到目前为止,这是我的代码,

$host = 'xxx';
$user = 'xxxx';
$pass = 'xxxx';
$db = 'xxxx';
$table = 'headers';
$file = 'export';

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("Can not connect.");

$result = mysql_query("SHOW COLUMNS FROM ".$table." WHERE Field NOT IN ('invhead_id', 'note');");
$i = 0;
if (mysql_num_rows($result) > 0) 
{
   while ($row = mysql_fetch_assoc($result)) 
   {
      $csv_output .= $row['Field'].", ";
      $i++;
   }
}
$csv_output .= "\n";

$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) 
{
   for ($j=0;$j<$i;$j++) 
   {
      $csv_output .= $rowr[$j].", ";
   }

   $csv_output .= "\n";
}


print $csv_output;
exit;

我已经排除了invhead_id列和$ result输出中的注释,但也需要从$ values输出中排除它们,但这是我无法工作的那一点。有人能指出我正确的方向吗?

由于

1 个答案:

答案 0 :(得分:2)

最简单的方法是按名称选择列,而不是选择*

没有更简单的方法,但你也可以编写一个php函数来比较你的两个数组并根据第一个数组丢弃你不想要的那些......你应该只使用我的第一个想法。 / p>

SELECT field1, field2, field7 FROM table