函数中的mysql查询和结果语句

时间:2012-05-25 05:33:39

标签: php mysql function

我想知道我一直试图将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';
?>

2 个答案:

答案 0 :(得分: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方法中使用的变量中获取函数的输出。即。

$result = setting('Warrenty');

希望这有帮助。

答案 1 :(得分:0)

您正在分配本地“$ result”变量,因此“mysql_fetch_row($ result)”正在使用字符串变量“$ result”,初始化为“$ result =''”,这不是资源,因此将提出异常。

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

function setting($claim){
global $result;
    $query = "...;
    ...
}