我知道如何使用PHP导出到CSV来查询mySQL并填充CSV。但是,是否可以让用户选择他们想要的列,并相应地改变SQL查询?
我已建立与数据库的连接,添加了我的查询:
$query = sprintf("SELECT x, y, z from a");
$result = mysql_query( $query, $conn ) or die( mysql_error( $conn ) );
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename=export.csv' );
$row = mysql_fetch_assoc( $result );
if ( $row )
{
echocsv( array_keys( $row ) );
}
while ( $row )
{
echocsv( $row );
$row = mysql_fetch_assoc( $result );
}
function echocsv( $fields )
{
$separator = '';
foreach ( $fields as $field )
{
if ( preg_match( '/\\r|\\n|,|"/', $field ) )
{
$field = '"' . str_replace( '"', '""', $field ) . '"';
}
echo $separator . $field;
$separator = ',';
}
echo "\r\n";
}
答案 0 :(得分:2)
是的。您必须创建一个表单,用户选择要导出的字段,我在一个复选框列表中,您可以列出可以获取的所有可用数据库字段,然后根据用户选择创建查询。 EJ:
<form action="" method="post">
<label><input name="fields[]" type="checkbox" value="name"> Username</label>
<label><input name="fields[]" type="checkbox" value="birthdate"> Birthdate</label>
</form>
然后在服务器端创建数据库查询。
$sql = "SELECT `". implode("`, `", $_POST["fields"]) ."` FROM db_table";
希望得到这个帮助。