Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 将mysql导出到csv时获取随机场名_Php_Mysql_Csv - Fatal编程技术网

Php 将mysql导出到csv时获取随机场名

Php 将mysql导出到csv时获取随机场名,php,mysql,csv,Php,Mysql,Csv,我正在尝试将mysql表导出到csv。我遇到的问题是,每次代码递增时,它都会放入一个名为“id”的字段名。在第一个字段之后,我得到了id。在那之后,还有两个字段,我得到了id。三个字段之后,我得到了id字段。我不知道为什么会这样。非常感谢您的帮助。(注意:我知道不要使用mysql,我通常使用mysqli,但这就是我现在使用的)。 这是我的密码: $hostname = "localhost"; //SET SERVER/HOSTNAME $dbusername = "userna

我正在尝试将mysql表导出到csv。我遇到的问题是,每次代码递增时,它都会放入一个名为“id”的字段名。在第一个字段之后,我得到了id。在那之后,还有两个字段,我得到了id。三个字段之后,我得到了id字段。我不知道为什么会这样。非常感谢您的帮助。(注意:我知道不要使用mysql,我通常使用mysqli,但这就是我现在使用的)。 这是我的密码:

    $hostname = "localhost"; //SET SERVER/HOSTNAME
    $dbusername = "username"; //SET DATABASE USERNAME
    $dbname = "dbname"; //SET DATABASE NAME
    $dbpassword = "password"; //SET DATABASE USERNAME

$dbhandle = mysql_connect($hostname, $dbusername, $dbpassword) 
  or die("Unable to connect to MySQL");

$selected = mysql_select_db($dbname,$dbhandle) 
  or die("Could not select Data Base");

    header("Content-type: application/csv");
    header("Content-Disposition: attachment; filename=test.csv");
    header("Pragma: no-cache");
    header("Expires: 0");



$query = "SELECT * FROM v88374";

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

$fields = mysql_num_fields ( $export );

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

    echo $header;
}

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";                        
}

print "$header\n$data";

exit();
$hostname=“localhost”//设置服务器/主机名
$dbusername=“username”//设置数据库用户名
$dbname=“dbname”//设置数据库名称
$dbpassword=“password”//设置数据库用户名
$dbhandle=mysql\u connect($hostname、$dbusername、$dbpassword)
或者死亡(“无法连接到MySQL”);
$selected=mysql\u select\u db($dbname,$dbhandle)
或死亡(“无法选择数据库”);
标题(“内容类型:应用程序/csv”);
标题(“内容配置:附件;文件名=test.csv”);
标题(“杂注:无缓存”);
标题(“到期日:0”);
$query=“从v88374中选择*”;
$export=mysql\u query($query)或die(“Sql错误:”.mysql\u错误());
$fields=mysql\u num\u字段($export);
对于($i=0;$i<$fields;$i++)
{
$header.=mysql_字段_名称($export,$i)。“|”\t”;
echo$header;
}
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”;
}
打印“$header\n$data”;
退出();
我会使用

fputcsv()
下面的文档中有一个示例


我认为在接下来的更改中,这将是一种更好的方法,更简单一些:

$query=“从v88374中选择*”;
$export=mysql\u query($query)或die(“Sql错误:”.mysql\u错误());
$query=“显示v88374中的列”;
$rfields=mysql\u query($query)或die(“Sql错误:.mysql\u错误());
$rows=array();
$fields=array();
$tmp=mysql\u fetch\u assoc($rfields);
while($tmp)
{
$fields[]=$tmp['Field'];
$tmp=mysql\u fetch\u assoc($rfields);
}
@mysql免费搜索结果($rfields);
$tmp=mysql\u fetch\u assoc($export);
while($tmp)
{
$rows[]=$tmp;
$tmp=mysql\u fetch\u assoc($export);
}
@mysql_免费_结果($export);
$header=内爆(“|\t”,$fields);
$ifields=计数($fields);
回显“”;变量转储($ifields,$fields);
$data='';
foreach($行作为$行)
{
$line='';
对于($i=0;$i<$ifields;$i++)
$line.=($line==''?'':“\t”).$row[$fields[$i]];
$data.=$line.“\n”;
}
echo$头。“\n”。$数据;
退出();

$query=“从v88374中选择*”;
$export=mysql\u query($query)或die(“Sql错误:”.mysql\u错误());
$rows=array();
$fields=array();
$tmp=mysql\u fetch\u字段($export);
while($tmp)
{
$fields[]=$tmp->name;
$tmp=mysql\u fetch\u字段($export);
}
$tmp=mysql\u fetch\u assoc($export);
while($tmp)
{
$rows[]=$tmp;
$tmp=mysql\u fetch\u assoc($export);
}
@mysql_免费_结果($export);
$header=内爆(“|\t”,$fields);
$ifields=计数($fields);
回显“”;变量转储($ifields,$fields);
$data='';
foreach($行作为$行)
{
$line='';
对于($i=0;$i<$ifields;$i++)
$line.=($line==''?'':“\t”).$row[$fields[$i]];
$data.=$line.“\n”;
}
echo$头。“\n”。$数据;
退出();

为什么不使用?必须使用:
mysql\u*
函数。不建议编写新代码,因为它会阻止您将来升级。相反,请使用或和。@jasonmccury OP清楚说明
注意:我知道不使用mysql,我通常使用mysqli,但这就是我现在使用的我想我们明白了…@amaster507,如果你明白了,你就不会用它了。
$query = "SELECT * FROM v88374";
$export = mysql_query ($query ) or die ( "Sql error : " . mysql_error( ) );
$query = "SHOW COLUMNS FROM v88374";
$rfields = mysql_query ($query ) or die ( "Sql error : " . mysql_error( ) );
$rows = array();
$fields = array();

$tmp = mysql_fetch_assoc ( $rfields );
while($tmp)
{
    $fields[] = $tmp['Field'];
    $tmp = mysql_fetch_assoc ( $rfields );
}
@mysql_free_result($rfields);

$tmp = mysql_fetch_assoc ( $export );
while($tmp)
{
    $rows[] = $tmp;
    $tmp = mysql_fetch_assoc ( $export );
}
@mysql_free_result($export);

$header = implode("|\t", $fields);
$ifields = count($fields);
echo '<pre>';var_dump($ifields, $fields);
$data = '';
foreach($rows as $row)
{
    $line = '';
    for($i = 0; $i < $ifields; $i++)
        $line .= ($line == '' ? '' : "\t").$row[$fields[$i]];
    $data .= $line."\n";
}

echo $header."\n".$data;
exit();