Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从sql语句创建多个CSV文件_Php_Mysql_Csv - Fatal编程技术网

Php 从sql语句创建多个CSV文件

Php 从sql语句创建多个CSV文件,php,mysql,csv,Php,Mysql,Csv,我正在运行sql,如下所示,以选择数据库中定义了兴趣代码的所有行。现在,我想将所有选定的结果导出到CSV中,但这将发生大约30次,因为大约有30个兴趣代码。是否有一种方法可以让我一个接一个地循环使用一个sql,每次使用新sql查询的结果创建一个新的CSV 两个sql查询的示例 select * from subscribers where list=27 and custom_fields LIKE '%\%CV\%%'; select * from subscribers where list

我正在运行sql,如下所示,以选择数据库中定义了兴趣代码的所有行。现在,我想将所有选定的结果导出到CSV中,但这将发生大约30次,因为大约有30个兴趣代码。是否有一种方法可以让我一个接一个地循环使用一个sql,每次使用新sql查询的结果创建一个新的CSV

两个sql查询的示例

select * from subscribers where list=27 and custom_fields LIKE '%\%CV\%%';
select * from subscribers where list=27 and custom_fields LIKE '%\%JJC\%%';
等等。。。每次创建一个全新的CSV文件。30个文件

我发现了以下内容(尚未测试),但我认为这可能是php,但需要它一个接一个地执行sql

$select = "select * from subscribers where list=27 and custom_fields LIKE '%\%CV\%%';";

$export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) );

$fields = mysql_num_fields ( $export );

for ( $i = 0; $i < $fields; $i++ )
{
    $header .= mysql_field_name( $export , $i ) . "\t";
}

while( $row = mysql_fetch_row( $export ) )
{
    $line = '';
    foreach( $row as $value )
    {                                            
        if ( ( !isset( $value ) ) || ( $value == "" ) )
        {
            $value = "\t";
        }
        else
        {
            $value = str_replace( '"' , '""' , $value );
            $value = '"' . $value . '"' . "\t";
        }
        $line .= $value;
    }
    $data .= trim( $line ) . "\n";
}
$data = str_replace( "\r" , "" , $data );

if ( $data == "" )
{
    $data = "\n(0) Records Found!\n";                        
}

header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=your_desired_name.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
$select=“select*来自订阅服务器,其中list=27和自定义字段“%\%CV\%%;”;
$export=mysql\u query($select)或die(“Sql错误:”.mysql\u错误());
$fields=mysql\u num\u字段($export);
对于($i=0;$i<$fields;$i++)
{
$header.=mysql\u字段\u名称($export,$i)。“\t”;
}
while($row=mysql\u fetch\u row($export))
{
$line='';
foreach(行作为$value)
{                                            
如果((!isset($value))| |($value==“”)
{
$value=“\t”;
}
其他的
{
$value=str_replace(“,“,”,$value);
$value=“.”.$value.“.”“\t”;
}
$line.=$value;
}
$data.=修剪($line)。“\n”;
}
$data=str_replace(“\r”,”,$data);
如果($data==“”)
{
$data=“\n(0)找到记录!\n”;
}
标题(“内容类型:应用程序/八位字节流”);
标题(“内容配置:附件;文件名=您的所需名称.xls”);
标题(“杂注:无缓存”);
标题(“到期日:0”);
打印“$header\n$data”;

我会编写一个函数,创建一个导出,然后在不同代码的循环中调用它。类似如下:

function export($code)
{
    $query = "select * from subscribers where list=27 and custom_fields LIKE '%\%" . $code . "\%%'";
    // put the results for this query in $data as in your example
    file_put_contents('/path/to/file/for/code_' . $code, $data);
}

$codes = array('CV', 'JCC', '...');
foreach ($codes as $code) {
    export($code);
}

我试图拼凑出如何将您的示例和我的代码组合在一起,但还没有完全做到。这是否接近组合所需的程度?