即使函数在include上,也要调用未定义的函数

时间:2017-03-03 18:59:07

标签: php excel phpexcel

我正在处理一个将数据从表导出到Excel文件的PHP文件。我需要使用的一段代码是在当前文件中include d的文件中。但是,当我尝试运行代码时,出现以下错误:Fatal error: Call to undefined function buscarFaltantesPorProveedor() in /require/exportarFaltantesExcel.php on line 13

我猜我得到这个错误,因为我正在调用一个类变量,但我不确定。你能帮我么?谢谢!

PHP excel代码:

<?php
error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', 1);

include('../accesodatos/consultas.php');
require_once('../excel/Classes/PHPExcel.php');
require_once('../excel/Classes/PHPExcel/IOFactory.php');    
$proveedor = $_GET['proveedor'];
echo $proveedor;

$objPHPExcel = new PHPExcel();
 // $objPHPExcel = new PHPExcel();
$query = buscarFaltantesPorProveedor($proveedor);
 $row = 1;

 while($row_data = mysql_fetch_array($query)){
    $col = 0;
    foreach($row_data as $key=>$value) {
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
        $col++;
    }
    $row++;
}

 header('Content-Type: application/vnd.openxmlformats-   officedocument.spreadsheetml.sheet');
 header('Content-Disposition: attachment;filename="'.$proveedor.date("Y-m-d").'".xlsx"');
 header('Cache-Control: max-age=0');

 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
 $objWriter->save('php://output');
?>

consultas.php中的一段代码:

function buscarFaltantesPorProveedor($proveedor){
conectar();
if(strcmp($proveedor,"Todos") == 0){
    $instruccion = "SELECT * FROM articulos, estatus, ordenes, proveedor WHERE art_id_estatus = est_id AND art_id_orden = ord_id AND art_id_proveedor = pro_id_clave AND art_num_guia IS NULL";
}else{
    $instruccion = "SELECT * FROM articulos, estatus, ordenes, proveedor WHERE art_id_estatus = est_id AND art_id_orden = ord_id AND art_id_proveedor = pro_id_clave AND art_num_guia IS NULL and pro_id_clave = '$proveedor'";
}

$tabla = mysql_query($instruccion);
return $tabla;
}

另外,我尝试使用$this来调用方法,但我也遇到了错误。这是为什么?我不能在方法上使用$this吗?

2 个答案:

答案 0 :(得分:1)

可能的原因:也许buscarFaltantesPorProveedor是一个类的方法。检查它是否在consultas.php中的class AlgumaCoisa {  ... }内,如下所示:

class AlgumaCoisa {
  /* Instead AlgumaCoisa, any name can be used. */ 

  /* Some other code can go here */

  function buscarFaltantesPorProveedor($proveedor){
    /* ... */
  }

  /* Some other code can go here */

}

(它不会被命名为AlgumaCoisa,它会有一些其他名称;另外,可以在开始{之前编写其他内容。)

请查看consultas.php。如果这确实是一个类的成员,那么你必须像$object->buscarFaltantesPorProveedor那样调用它,其中$object是类的实例。您需要创建类的实例,如下所示:

$object = new AlgumaCoisa(/* some AlgumaCoisa-dependent code here */);

而不是AlgumaCoisa,写下在consultas.php中使用的类的名称。

注意括号内的参数。括号中的参数将由类__construct中的另一个方法确定。

另一个可能的原因:也许consultas.php在不同的命名空间中。检查consultas.php顶部是否有namespace AlgumaCoisa;。如果有,您需要调用您的函数AlgumaCoisa\buscarFaltantesPorProveedor

答案 1 :(得分:0)

前天,我遇到了同样的错误。

index.php

<?php
echo 'This works';
require 'functions.php';
echo butThis();
?>

functions.php

<?
function butThis() {return "not works";}
?>

花了我一段时间...但是今天我看到问题出在short_open_tag:-)