导出MySQL DB到excel(连接问题)

问题描述:

我在MySQL DB中有一个表,我想将它导出到excel。我已经尝试了很多的源代码,但它似乎没有为我工作;它看起来像我有一个连接问题,它应该在我的.php代码和DB之间。我使用XMPP来托管我的数据库(phpmyadmin)我可以通过输入localhost/phpmyadmin或localhost来访问它:80/phpmyadmin我创建到数据库的一个名为“test”,第二个是“gfdepot “。我对第二个感兴趣。在“gfdepot”数据库中,我有6个表,并且我对名为“zone”的表感兴趣。导出MySQL DB到excel(连接问题)

那么,目前我正在使用eclipse IDE(安装了.php扩展名)来编写我的网站脚本。我只想要一个可点击的按钮来将“区域”表导出到Excel文件。可点击的按钮效果不错,但“.php”页面不起作用! 无论我尝试我总是得到连接错误。 目前,我尝试下面的代码。

<?php 
 
/*******EDIT LINES 3-8*******/ 
 
$DB_Server = "localhost"; //MySQL Server  
 
$DB_Username = "root"; //MySQL Username  
 
$DB_Password = "";    //MySQL Password  
 
$DB_DBName = "gfdepot";   //MySQL Database Name 
 
$DB_TBLName = "zone"; //MySQL Table Name 
 
$filename = "excelfilename";   //File Name 
 
/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/  
 
//create MySQL connection 
 
$sql = "Select * from $DB_TBLName"; 
 
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno()); 
 
//select database 
 
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 
 
//execute query 
 
$result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());  
 
$file_ending = "xls"; 
 
//header info for browser 
 
header("Content-Type: application/xls");  
 
header("Content-Disposition: attachment; filename=$filename.xls"); 
 
header("Pragma: no-cache"); 
 
header("Expires: 0"); 
 
/*******Start of Formatting for Excel*******/ 
 
//define separator (defines columns in excel & tabs in word) 
 
$sep = "\t"; //tabbed character 
 
//start of printing column names as names of MySQL fields 
 
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
 
echo mysql_field_name($result,$i) . "\t"; 
 
} 
 
print("\n");  
 
//end of printing column names 
 
//start while loop to get data 
 
    while($row = mysql_fetch_row($result)) 
 
    { 
 
     $schema_insert = ""; 
 
     for($j=0; $j<mysql_num_fields($result);$j++) 
 
     { 
 
      if(!isset($row[$j])) 
 
       $schema_insert .= "NULL".$sep; 
 
      elseif ($row[$j] != "") 
 
       $schema_insert .= "$row[$j]".$sep; 
 
      else 
 
       $schema_insert .= "".$sep; 
 
     } 
 
     $schema_insert = str_replace($sep."$", "", $schema_insert); 
 
     $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
 
     $schema_insert .= "\t"; 
 
     print(trim($schema_insert)); 
 
     print "\n"; 
 
    } 
 
?>

,这是我所得到的。

" . mysql_error() . " 
 
" . mysql_errno()); //select database $Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database: 
 
" . mysql_error(). " 
 
" . mysql_errno()); //execute query $result = @mysql_query($sql,$Connect) or die("Couldn't execute query: 
 
" . mysql_error(). " 
 
" . mysql_errno()); $file_ending = "xls"; //header info for browser header("Content-Type: application/xls"); header("Content-Disposition: attachment; filename=$filename.xls"); header("Pragma: no-cache"); header("Expires: 0"); /*******Start of Formatting for Excel*******/ //define separator (defines columns in excel & tabs in word) $sep = "\t"; //tabbed character //start of printing column names as names of MySQL fields for ($i = 0; $i < mysql_num_fields($result); $i++) { echo mysql_field_name($result,$i) . "\t"; } print("\n"); //end of printing column names //start while loop to get data while($row = mysql_fetch_row($result)) { $schema_insert = ""; for($j=0; $j

嗯,这是我在这里的第一篇文章,我又不是编程高手,这是我第一次尝试以.php代码,TNX提前

+0

我想补充一点,我已经成功地展现出的.jsp页面 在我的桌子,这是连接的线 康恩=的DriverManager.getConnection(“JDBC:MySQL的://本地主机:3306/gfdepot“,”root“,”“); – Aksel2099

切换您的主机名指定端口号

例如。本地主机:3306

+0

1-在xampp上显示3306为MySQL, 2-我在eclipseIDE的tomcat服务器7.0(端口:8070)上托管.php文件,phpmyadmin在xampp上,xampp的Apache Serever端口是80,MySQL的端口是3306,所以我不认为他们在同一台服务器上。 3-well我已经在eclipse上使用该数据库登录并从数据库中读取信息,这就是为什么我认为它接受来自外部源的连接 – Aksel2099

+0

您是否尝试过更改主机名并将3306添加到您的php主机名变量? –

+0

是的,我已经将它更改为$ DB_Server =“localhost:3306”; 但我得到同样的错误,请检查上面我编辑我的帖子,并添加我得到的错误信息。 – Aksel2099