我想知道我一直在尝试将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';
?>
您不会从函数返回任何结果。
使用return $result;
更新 1:
您尚未贴花您尝试在mysql_fetch_row
中使用的$result variable
,因此首先从函数赋值中返回值,然后使用它。
更新 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');
希望这有帮助。
您正在分配一个局部"$result"变量,因此"mysql_fetch_row($result)"正在使用字符串变量"$result",初始化为"$result = ''",这不是资源,因此会引发异常。
在"设置"功能中,添加"全局$result;"行:
function setting($claim){
global $result;
$query = "...;
...
}