1

我想知道我一直在尝试将 MySQL 查询和 MySQL 结果代码放入这样的 PHP 函数中

 function setting($claim){
    $query = "SELECT `cases`, `hg`, `surname`, `firstname`, `type`, `claim`, `charge`, `damage`, `payment`, `repair`, `returned`, `comments`, `cost` FROM `rep_log` WHERE claim='$claim'";
    $result = mysql_query($query) or die(mysql_error());
}

我正在尝试使用它,以便我可以更轻松地更改正在选择的内容,而不必为了更改查询而拥有大量不同的变量和东西......所以基本上我所做的是

echo setting("warrenty");

但我收到一个错误:

警告:mysql_fetch_row() 期望参数 1 是资源,字符串在 ...

所以我想知道是否有可能将 MySQL 查询和结果放入一个函数中,或者它只是一些不可能发生的事情......

如果可能的话,任何帮助都会很棒。

完整代码

<?
// connection with the database
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "netbookdb";
$result="";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

// require the PHPExcel file
require 'Classes/PHPExcel.php';

// simple query
 function setting($claim){
    $query = "SELECT `cases`, `hg`, `surname`, `firstname`, `type`, `claim`, `charge`, `damage`, `payment`, `repair`, `returned`, `comments`, `cost` FROM `rep_log` WHERE claim='$claim'";
    $result = mysql_query($query) or die(mysql_error());
}



    // Create a new PHPExcel object
   $objPHPExcel = new PHPExcel();
   $objPHPExcel->getActiveSheet()->setTitle('Insurance');

echo setting('Warrenty');


$rowNumber = 1;
    while ($row = mysql_fetch_row($result)) {
       $col = 'A';
       foreach($row as $cell) {
          $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);
          $col++;
       }
       $rowNumber++;
    }


   // Save as an Excel BIFF (xls) file
   $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

   header('Content-Type: application/vnd.ms-excel');
   header('Content-Disposition: attachment;filename="myFile.xls"');
   header('Cache-Control: max-age=0');

   $objWriter->save('php://output');
   exit();

echo 'a problem has occurred... no data retrieved from the database';
?>
4

2 回答 2

4

没有从函数返回任何结果

采用return $result;

更新 1:

您还没有标记$result variable您尝试使用的对象,mysql_fetch_row因此首先从函数分配它返回值,然后使用它

更新 2:

function setting($claim){
    $query = "SELECT `cases`, `hg`, `surname`, `firstname`, `type`, `claim`, `charge`, `damage`, `payment`, `repair`, `returned`, `comments`, `cost` FROM `rep_log` WHERE claim='$claim'";
    $result = mysql_query($query) or die(mysql_error());
    return $result;
}

然后在mysql_fetch_row方法中使用的变量中获取函数的输出。IE

$result = setting('Warrenty');

希望这可以帮助。

于 2012-05-25T05:36:58.637 回答
0

您正在分配一个本地“$result”变量,因此“mysql_fetch_row($result)”正在使用字符串变量“$result”,初始化为“$result = ''”,这不是资源,因此会引发异常.

在“设置”功能中,添加“global $result;” 线:

function setting($claim){
global $result;
    $query = "...;
    ...
}
于 2012-05-25T05:47:50.920 回答