<?php
include("includes/config.php");
if ($_POST['frmCsv']) {
$strSelect = doSelectCsv();
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename=export.csv' );
$strRow = mysql_fetch_assoc( $strSelect );
printArray($strRow);
if ( $strRow ) {
outputcsv( array_keys( $strRow ) );
}
while ( $strRow ) {
outputcsv( $strRow );
}
}
function doSelectCsv()
{
$strSql = "SELECT * FROM tbl_member";
$strResult = SelectQry($strSql);
}
function outputcsv( $fields )
{
$separator = '';
foreach ( $fields as $field ) {
echo $separator . $field;
$separator = ',';
}
}
?>
这是我从数据库导出csv文件的代码。但它无法选择数据。选择查询无法正常工作。请帮帮我。
答案 0 :(得分:2)
一个问题是doSelectCsv()
没有返回任何内容,但您有以下代码:
$strSelect = doSelectCsv();
然后在下面:
$strRow = mysql_fetch_assoc( $strSelect );
在没有任何SelectQry()
知道的情况下,很难真正建议解决方案,但doSelectCsv()
必须返回一个值,以便稍后使用。也许以下就足够了:
function doSelectCsv()
{
$strSql = "SELECT * FROM tbl_member";
$strResult = SelectQry($strSql);
return $strResult; // added this line
}
注意:不推荐使用MySQL系列PHP,并且对它的支持将消失。请查看PDO或Mysqli。
但是,如果我们查看MySQL代码,则会出现以下问题:
$strRow = mysql_fetch_assoc( $strSelect );
printArray($strRow);
if ( $strRow ) {
outputcsv( array_keys( $strRow ) );
}
while ( $strRow ) {
outputcsv( $strRow );
}
您已使用$strRow
将第一行分配给mysql_fetch_assoc()
,但之后您永远不会获取其他行。我相信上面的内容应该是这样的:
$strRow = mysql_fetch_assoc( $strSelect );
printArray($strRow);
if ( $strRow ) {
outputcsv( array_keys( $strRow ) );
while ($strRow = mysql_fetch_assoc($strSelect)) {
outputcsv( $strRow );
}
}
这会将第一行的数组键发送到outputcsv()
,然后我们遍历if
块内的所有其他行,将其余数据发送到outputCsv
。但同样,对于一个严肃的应用程序,请查看PHP提供的新扩展,因为mysql_*
函数最终会消失。
另外,正如有人在评论中暗示的那样,PHP有一个函数写入CSV数据,即fputcsv()
。这将处理任何特殊情况(如果数据项中包含逗号,该怎么办?)。
答案 1 :(得分:0)
只要用它兄弟:)
<?php
if($_POST["download"]){
$output="";
$line_termineted="\n";
if( $_POST["download"] =="CSV") $field_termineted=","; else $field_termineted="\t";
$enclosed='"';
$escaped="\\";
$export_schema="SR No".$field_termineted."Student ID".$field_termineted."First Name".$field_termineted."Middle Name".$field_termineted."Last Name";
$dataQuery=mysql_query("select * from sof_student ");
$output.=$export_schema;
$p=0;
while($data=mysql_fetch_array($dataQuery)) {
$p++;
$output.= $line_termineted.$p.$field_termineted;
$output.=$enclosed.$data["id"].$enclosed.$field_termineted;
$output.=$enclosed.$data["first_name"].$enclosed.$field_termineted;
$output.=$enclosed.$data["middle_name"].$enclosed.$field_termineted;
$output.=$enclosed.$data["last_name"].$enclosed.$field_termineted;
}
header("Content-Description: File Transfer");
if( $_POST["download"] =="CSV"){
header("Content-Type: application/csv");
header("Content-Disposition: attachment; filename=report".date("d_m_Y_H_i_s").".csv");
} else {
header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=report".date("d_m_Y_H_i_s").".xls");
}
header("Content-Transfer-Encoding: binary");
header("Expires: 0");
header("Cache-Control: must-revalidate");
header("Pragma: public");
header("Content-Length: ".strlen($output));
ob_clean();
flush();
echo $output;
exit;
}
?>