2017-07-11 1 views
2

J'essaie d'obtenir le nom de champ de ma table provenant de ma base de données en utilisant PHPExcel.Obtenir le nom de champ de MySQL vers Excel en utilisant PHPExcel

Cependant, je reçois une erreur disant

mysql_field_name() attend le paramètre 2 à être long, chaîne donnée dans C: \ xampp \ htdocs \ phpexcelsample \ download.php en ligne 42

Je pense qu'il me manque quelque chose ici ... pouvez-vous me donner des conseils sur la façon d'obtenir le nom de domaine?

Voici mon code:

<?php 




$dbhost= "localhost"; //your MySQL Server 
$dbuser = "root"; //your MySQL User Name 
$dbpass = ""; //your MySQL Password 
$dbname = "sales"; 
//your MySQL Database Name of which database to use this 
$tablename = "deposit"; 
//your MySQL Table Name which one you have to create excel file 
// your mysql query here , we can edit this for your requirement 
$sql = "Select * from $tablename "; 
//create code for connecting to mysql 
$connect = @mysql_connect($dbhost, $dbuser, $dbpass) 
or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . 
mysql_errno()); 
//select database 
$Db = @mysql_select_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()); 

error_reporting(E_ALL); 


require_once 'Classes/PHPExcel.php'; 
// Execute the database query 
// Instantiate a new PHPExcel object 
$objPHPExcel = new PHPExcel(); 
// Set the active Excel worksheet to sheet 0 
$objPHPExcel->setActiveSheetIndex(0); 
// Initialise the Excel row number 
$rowCount = 1; 

//start of printing column names as names of MySQL fields 
$column = 'A'; 
for ($i = 1; $i < mysql_num_fields($result); $i++)  
{ 
//$objPHPExcel->getActiveSheet()->setCellValue($column.$rowCount, 
mysql_field_name($result,$i)); 
$objPHPExcel->getActiveSheet()->setCellValue($column.$rowCount, 
mysql_field_name($result,'EMPLOYEE')); 
$column++; 
} 
//end of adding column names 

//start while loop to get data 
$rowCount = 2; 
while($row = mysql_fetch_row($result)) 
{ 
$column = 'A'; 
for($j=1; $j<mysql_num_fields($result);$j++) 
{ 
    if(!isset($row[$j])) 
     $value = NULL; 
    elseif ($row[$j] != "") 
     $value = strip_tags($row[$j]); 
    else 
     $value = ""; 

    $objPHPExcel->getActiveSheet()->setCellValue($column.$rowCount, $value); 
    $column++; 
} 
$rowCount++; 
} 


// Redirect output to a client’s web browser (Excel5) 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="Result.xls"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 









?> 
+0

L'erreur vient de ce code 'mysql_field_name ($ result, 'EMPLOYEE')); Êtes-vous sûr de l'avoir besoin? –

+0

@DollyAswin, Oui je suis sûr ... Je veux montrer des noms de champs spécifiques, comme EMPLOYEE, DATE, AMOUNT etc ... c'est pourquoi j'essaie de tester un seul champ si cela fonctionne .... cependant, J'ai des problèmes avec ça :( – Rukikun

+0

Je pense que 'mysql_field_name ($ result, $ i));' est suffisant, donc vous n'en avez pas besoin. L'erreur vient de ce code, parce que vous mettez la chaîne sur second param ('EMPLOYEE') –

Répondre

0

Je l'ai appris comment le faire :)

Voici mon code:

$dbhost= "localhost"; //your MySQL Server 
$dbuser = "root"; //your MySQL User Name 
$dbpass = ""; //your MySQL Password 
$dbname = "sales"; 
//your MySQL Database Name of which database to use this 
$tablename = "deposit"; 
//your MySQL Table Name which one you have to create excel file 
// your mysql query here , we can edit this for your requirement 
$sql = "Select * from $tablename "; 
//create code for connecting to mysql 
$connect = @mysql_connect($dbhost, $dbuser, $dbpass) 
or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . 
mysql_errno()); 
//select database 
$Db = @mysql_select_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()); 

error_reporting(E_ALL); 

require_once 'Classes/PHPExcel.php'; 
// Execute the database query 
// Instantiate a new PHPExcel object 
$objPHPExcel = new PHPExcel(); 
// Set the active Excel worksheet to sheet 0 
$objPHPExcel->setActiveSheetIndex(0); 
// Initialise the Excel row number 
$rowCount = 1; 

while($row = mysql_fetch_array($result)){ 
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['DATE']); 

$rowCount++; 
} 
0

Votre misstake ici mysql_field_name($result,'EMPLOYEE'));, parce entier mysql_field_name requis second paramètre http://php.net/manual/en/function.mysql-field-name.php

Si vous montrer les noms de champs spécifiques, vous pouvez l'obtenir dans le tableau et de travailler avec il. Par exemple:

<?php 
$query = 'SHOW COLUMNS FROM `table`'; 
$fields = []; 
try { 
    /* $mysqli connection object */ 

    if(!$res = $mysqli->query($query)) { 
     throw new Exception($mysqli->error); 
    } 

    while($row = $res->fetch_assoc()) { 
     $fields[] = $row['Field']; 
    } 
} catch(Exception $e) { 
    echo $e->getMessage(); 
} 

var_dump($fields); 

Et voir http://php.net/manual/en/book.mysqli.php