我想知道我一直试图将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';
?>
答案 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 = "...;
...
}