2012-01-27 97 views
0

因此,我已经在堆栈和谷歌以及我能想到的任何地方搜索了大多数答案。确实有很多答案,但没有一个有我需要的结构。将MySql表导出为CSV?

铝我的代码看起来是这样的:

$sql = "SELECT * FROM users WHERE user_level = '$level' ORDER BY user_username DESC"; 
    if ($stmt = $this->connect->prepare($sql)) { 
     $stmt->bind_result($id); 
     $stmt->execute(); 
     while ($row = $stmt->fetch()) { 
      $stmt->bind_result($id); 
      $users[] = $id; 
     } 
     $stmt->close(); 
     $length[] = sizeof($users); 
    } else { 
     $error    = true; 
     $message['error'] = true; 
     $message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE; 
     return json_encode($message); 
    } 

我用了我所有的代码mysqlistmt,所以我想保持这样的所有道路。

所以,我明白我不能有CSV文件,我有我的动作按钮来下载它。但事情是,我的行动按钮是一个窗体的一部分,所以我猜想,而不是$_GET页面上我有CSV我会有$_POST

而我的问题,我如何循环浏览所有数据库(这需要依赖于一个列,一个级别),并将所有数据组织在一个CSV文件中,然后下载它?但是这需要像我的功能结构一样,我不想使用db_query("SELECT * FROM {loreal_salons}");或者其他类似的功能。

回答

1

的所有列使用以下命令:

// Setup the headers to force download of CSV 
header("Content-type: application/csv"); 
header("Content-Disposition: attachment; filename=file.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 


// loop your records here and output as comma separated 
echo $row['col1'].",".$row['col3'].",".$row['col3']."\n"; 
+0

OK,但标题将进入处理CSV的相同文件?还是单独的文件?而CSV必须命名为'filename = myfilename.csv'? – Roland 2012-01-27 22:28:59

+0

只要它们是[第一个输出](http://php.net/manual/en/function.header.php),并且文件名可以是任何你喜欢的东西,你就可以在任何地方输出标题 - 这会导致浏览器下载文件 – ManseUK 2012-01-27 22:31:25

+0

OK。我怎样才能从表格中排列所有数据?例如,我有一个user_level列,它可以是0,1或2,并且我希望根据该列输出数据,如果该级别为0,则输出所有具有0级别的用户,而其余的都不会是这样,等等有没有办法通过遵循我的代码来做到这一点? – Roland 2012-01-27 22:38:06