2015-07-11 35 views
-1

当我运行此查询"SELECT name , domain FROM my_data ORDER by id"到phpmyadmin的结果是这样的:出口的MySQL结果阵列脱颖而出

 name domain 
    Bahamdan Group Holding Co. salam.com 
    ARINA RAMLEE salam.net 

这里是我的代码:

$con1 = mysqli_connect("localhost", "root", "", "test_pr"); 
     $sql2 = "SELECT name , domain FROM my_data ORDER by id"; 
     $result2 = mysqli_query($con1, $sql2); 
     $rows = array(); 
     while ($row = mysqli_fetch_array($result2, MYSQLI_ASSOC)) { 
      $rows[] = $row . PHP_EOL; 
     } 
     $nn = implode("", $rows); 
     var_dump($rows); 
     echo $nn . PHP_EOL; 
     $file = fopen("export.csv", "w"); 
     file_put_contents("export.csv", $nn); 
     fclose($file); 

但它不工作... 我想把它放在一个完全像在phpmyadmin中显示的文件中。 我的意思是我想在一个excel文件中有两列,其中一列是名称,另一列是域,并在列下有行数据。 我试过这个,这是工作,但我不知道如何创建我想用这个文件。

$con1 = mysqli_connect("localhost", "root", "", "test_pr"); 
     $sql2 = "SELECT name , domain FROM my_data ORDER by id"; 
     $result2 = mysqli_query($con1, $sql2); 
     $rows = array(); 
     while ($row = mysqli_fetch_array($result2, MYSQLI_ASSOC)) { 
      $domains[] = $row['domain'] . PHP_EOL; 
      $name[] = $row['name']. PHP_EOL; 
     } 

var_dump($domains); 
var_dump($name); 
     $nn = implode("", ??????); 
     $file = fopen("export.csv", "w"); 
     file_put_contents("export.csv", $nn); 
     fclose($file); 

这里是vardump

array (size=2) 
    0 => string 'salam.com 
' (length=11) 
    1 => string 'salam.net 
array (size=2) 
    0 => string 'Bahamdan Group Holding Co. 
' (length=28) 
    1 => string 'ARINA RAMLEE 
+1

什么不工作?你可以清理你的文章,摆脱所有无用的空间:如果你需要帮助,它必须是可读的。 –

+1

PHP有一个很好的叫做fputcsv()的小功能,并且[documentation](http://php.net/manual/en/function.fputcsv.php)演示了如何使用它来编写一个csv文件 –

+0

我想要的要做的是不工作...想要创建一个有两列,并包含域和名称数据的excel文件(就像我在phpmyadmin中看到的那样) –

回答

0

下面是示例代码通过使用用于获取数据MySQL的查询来生成Excel表。

//create query to select as data from your table 
$select = "SELECT * FROM table_name"; 

//run mysql query and then count number of fields 
$export = mysql_query ($select) 
     or die ("Sql error : " . mysql_error()); 
$fields = mysql_num_fields ($export); 

//create csv header row, to contain table headers 
//with database field names 
for ($i = 0; $i < $fields; $i++) { 
    $header .= mysql_field_name($export , $i) . ","; 
} 

//this is where most of the work is done. 
//Loop through the query results, and create 
//a row for each 
while($row = mysql_fetch_row($export)) { 
    $line = ''; 
    //for each field in the row 
    foreach($row as $value) { 
     //if null, create blank field 
     if ((!isset($value)) || ($value == "")){ 
      $value = ","; 
     } 
     //else, assign field value to our data 
     else { 
      $value = str_replace('"' , '""' , $value); 
      $value = '"' . $value . '"' . ","; 
     } 
     //add this field value to our row 
     $line .= $value; 
    } 
    //trim whitespace from each row 
    $data .= trim($line) . "\n"; 
} 
//remove all carriage returns from the data 
$data = str_replace("\r" , "" , $data); 


//create a file and send to browser for user to download 
header("Content-type: application/vnd.ms-excel"); 
header("Content-disposition: csv" . date("Y-m-d") . ".csv"); 
header("Content-disposition: filename=".$file_name.".csv"); 
print "$header\n$data"; 
exit; 
+0

何时开发人员将停止使用糟糕的自制解决方案编写csv文件,并开始使用PHP内置的[ fputcsv()](http://php.net/manual/en/function.fputcsv.php)函数? –