2011-06-16 79 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