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

function から結果を返していません。

使用する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');

お役に立てれば。

于 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 に答える