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


mysql query and result statement in a 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';
?>

不会从函数返回任何结果

使用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 = "...;
    ...
}