2012-12-04 57 views
0

我試圖帶一個MySQL結果行並將它傳遞給一個函數進行處理,但該行未被傳遞。我假設這是因爲實際行作爲對象返回並且對象無法傳遞到函數?將PHP MySQL結果對象傳遞到函數

E.G

function ProcessResult($TestID,$Row){ 
    global $ResultArray; 
    $ResultArray["Sub" . $TestID] = $Row["Foo"] - $Row["Bar"]; 
    $ResultArray["Add" . $TestID] = $Row["Foo"] + $Row["Bar"]; 
} 



$SQL = "SELECT TestID,Foo,Bar FROM TestResults WHERE TestDate !='0000-00-00 00:00:00'"; 
$Result= mysql_query($SQL$con); 

    if(!$Result){ 
     // SQL Failed 
     echo "Couldn't find how many tests to get"; 
    }else{ 

     $nRows = mysql_num_rows($Result); 

     for ($i=0;$i<$nRows;$i++) 
     { 
      $Row = mysql_fetch_assoc($Result); 

      $TestID = $Row[TestID]; 

      ProcessResult($TestID,$Row); 
     } 

    } 

我需要的是$ ResultArray填充了MySQL查詢數據的加載。這不是我的實際應用程序(我知道沒有必要爲顯示的內容做這件事),但將結果傳遞給函數的原理是相同的。

這實際上可以做些什麼嗎?

+0

不建議用於編寫新代碼的MySQL擴展。相反,無論是[mysqli](http://www.php.net/manual/en/book.mysqli.php)還是[PDO_MySQL](http://www.php.net/manual/en/ref.pdo應該使用-mysql.php)擴展名。另請參閱[MySQL API概述](http://www.php.net/manual/en/mysqlinfo.api.choosing.php)以獲得進一步幫助,同時選擇MySQL API。 –

+0

@DC_是對的。無論如何,你的意思是行不通過? – Raffaele

+0

'...和對象不能傳遞給函數嗎?'對象當然可以*傳遞給函數。順便說一句,他們通過引用傳遞,但他們仍然通過。 –

回答

0

mysql_query($SQL$con);應該是mysql_query($SQL,$con);第一個是語法錯誤。不知道這是否會影響您的程序,或者它是否只是這裏的拼寫錯誤。

我會建議在你的數組鍵上加引號。 $row[TestID]應該是$row["TestID"]

其餘的看起來應該工作,雖然這裏有一些奇怪的想法。

此外,您可以這樣做,使您的代碼更清潔。

if(!$Result){ 
    // SQL Failed 
    echo "Couldn't find how many tests to get"; 
}else{ 

    while($Row = mysql_fetch_assoc($Result)) 
    { 
     $TestID = $Row['TestID']; 

     ProcessResult($TestID,$Row); 
    } 

} 
+0

謝謝大家,我在做的事實際上並沒有什麼問題 - 這是我的SQL查詢並沒有在第一時間獲取正確的東西!不知道這是否甚至可能導致我首先質疑它,而不是看明顯的事情。 希望雖然如果有人問,如果有可能做到這一點,他們會發現這有用。 –

0

mysql_fetch_assoc()返回一個關聯數組 - see more

如果你需要一個對象,嘗試mysql_fetch_object()功能 - see more

兩個數組和對象可以被傳遞給函數。因此,你的代碼似乎是正確的,除了一行。它應該是:

$Result= mysql_query($SQL, $con); 

或者只是:

$Result= mysql_query($SQL);