2011-06-16 36 views
0

我需要從mySQL結果傳遞一個變量到foreach循環。PHP通過變量foreach從mySQL結果循環

所以我有這樣的代碼:

$GetClaim = "SELECT * FROM cR_Claimants WHERE memberID = '".$memberID."' AND ParentSubmission ='".$refNumb."'"; 
    $resultGetClaim=mysql_query($GetClaim) or die("Error select claimants: ".mysql_error()); 
    while($rowGetClaim = mysql_fetch_array($resultGetClaim)) { 
    $name = $rowGetClaim['Name']; 
$city = $rowGetClaim['city']; 
$region = $rowGetClaim['region']; 

    } 

現在我需要的變量傳遞給在foreach

foreach($name as $k=>$v) { 
    echo $city; 
echo $region; 
etc.. 
    } 

上面的代碼不起作用。我想我不能從一個mySQL循環中傳遞一個變量。問題也在於我從數據庫中得到的每一行都應該與特定的$名稱相關。所以obvioiusly一個$名將有自己的$城市等。

我該如何實現這一目標?

請幫

+1

$名字只是一個變量。不是一個數組是什麼呢? – zod 2011-06-16 20:22:43

+1

什麼是與第一個代碼塊中的問題?看起來已經像你得到的名字 – hakre 2011-06-16 20:22:53

+0

foreach不能正常工作,是的$ name是一個數組,這裏有更多的$ name可以從數據庫中得到結果..這就是爲什麼我需要一個foreach $ name。 – 2011-06-16 20:24:48

回答

1

要麼出直接就把fromt誒循環或通過它建立一個數組,然後循環。

while($rowGetClaim = mysql_fetch_array($resultGetClaim)) { 
    echo $rowGetClaim['Name']; 
    echo $rowGetClaim['city']; 
    echo $rowGetClaim['region']; 

} 

OR

while($rowGetClaim = mysql_fetch_array($resultGetClaim)) { 
    foreach($rowGetClaim as $k => $v{ 
    echo $v; 
    } 
} 

OR

$names = array(); 
while($rowGetClaim = mysql_fetch_array($resultGetClaim)) { 
    $names[] = $rowGetClaim; 
} 


foreach($names as $data){ 
    foreach($data as $k => $v) { 
    echo $v; 
    } 
} 
+0

我不確定要了解上一個代碼。爲什麼使用兩個foreach,一個用於$名稱,另一個用於$ data?我只需要將mySQL循環中的數組$名稱傳遞給foreach,然後結果應該是相關的並且是相應的。您提供的代碼的作用是什麼? – 2011-06-16 20:30:22

+1

'foreach($ data as $ k => $ v)'將每行分成名稱/值對,例如'$ data [$ k] = $ v'並且每個值都是'$ k'。這意味着你不需要硬編碼你希望在'$ data'數組中看到什麼(按鍵) – Rudu 2011-06-16 20:44:26

+0

那麼你的問題並不清楚。第三個示例將所有從DB恢復的行放入while循環的數組中。然後在foreach循環中,它遍歷該數組輸出行的所有值。如果您將mysql代碼放置在您要輸出的文檔的完全獨立部分中的serete文件中,則可以使用此示例。 – prodigitalson 2011-06-16 20:50:23

2

您還沒有獲取數組與所有返回的記錄,您檢索它包含一個記錄的數組。

要獲得下一個name(下一條記錄),您必須再次調用mysql_fetch_array。

您提供的代碼通過在while條件中分配$ rowGetClaim來隱式執行。一個失敗的mysql_fetch_array調用將返回false,這將退出while循環。

絕對沒有必要使用你爲每個呈現。只需將分配權後echo(如

$region = $rowGetClaim['region'];

echo $region

+0

不,不,不,這很簡單,我知道...我真的需要知道如何通過foreach。我無法解釋原因,因爲在這種情況下我需要一個小時。我只需要知道如何變換數組中有效foreach的$名稱,並且與$ name相關的每個結果都將在foreach中連續出現,如$ city,$ region等...... – 2011-06-16 20:49:18

+1

'for each'works在陣列上。 '$ name'不是一個數組,並且不包含每個記錄。期。 'while'是你在所有相關方面的'每個'陳述。 – horatio 2011-06-16 21:14:41