2012-05-25 34 views
1

我想知道,我一直在努力MySQL查詢和MySQL結果代碼將我變成這樣MySQL查詢和結果語句的功能

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()); 
} 

我試圖用這個讓我一個PHP函數可以更容易地更改所選擇的內容,而無需有不同的變量和東西堆只是更改查詢......所以基本上我做的是

echo setting("warrenty"); 

但我發現了一個錯誤:

Warning: mysql_fetch_row() expects parameter 1 to be resource, string given in ...

所以我想知道是它甚至有可能把一個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

您知道嗎[[warranty]](http://dictionary.reference.com/browse/warranty)拼寫錯誤? –

+0

'我得到一個錯誤,基本上說,沒有查詢已經運行,沒有結果已經返回......'你能發佈**精確**錯誤信息,而不是用你自己的話寫嗎? –

+0

此錯誤警告:mysql_fetch_row()期望參數1是資源,字符串在 – Matthew

回答

4

您是不返回任何結果出了功能的。

使用return $result;

更新1:

您還沒有decalred正嘗試在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'); 

希望這會有所幫助。

+0

我想在腳本中稍後使用結果,但所有工作正常,只有當它在fucntion中它不起作用 – Matthew

+1

@Matthew:你試過做什麼AlphaMale建議?如果不是,請先評論一下爲什麼你認爲它可能無法正常工作。如果你已經嘗試過,那麼更具體的是你有什麼新問題。發佈新的錯誤消息。 –

+0

@Mthethew檢查更新 – AlphaMale

0

您正在分配本地「$ result」變量,因此「mysql_fetch_row($ result)」正在使用字符串變量「$ result」,初始化爲「$ result =''」,這不是資源,因此會引發例外。

在「設置」功能中,添加「global $ result;」 line:

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