2013-07-06 60 views
0

我查询一个简单的数据库,我用下面的PHP代码...取副教授 - 将数据添加到阵列一旦每ID

while ($row = $results->fetch_assoc()) { 

    if($row["status"] == 1) { 
     $total[] = $row["to_win"]; 
    } 

    print_r($total); 

} 

目前的数据结构看起来像这样...

id   to_win   status 
1   1200.00   1 
2   238.94   2 
3   1850.57   1 
4   55.00   2 
5   127.85   2 

问题是,它似乎每次获得另一行时,它会将$ total添加到数组中。其结果是,我的print_r是这样的......

Array ([0] => 1200.00) Array ([0] => 1200.00) Array ([0] => 1200.00) Array ([0] => 1200.00 [1] => 1850.57) Array ([0] => 1200.00 [1] => 1850.57) Array ([0] => 1200.00 [1] => 1850.57) Array ([0] => 1200.00 [1] => 1850.57) Array ([0] => 1200.00 [1] => 1850.57) 

难道我只是把它添加它一次每个ID使阵列将包含一个1200.00和一个1850.57,而不是多个条目?

谢谢!

+1

在上一个'print_r'输出中,您的数组中有所需的两个条目。那有什么问题? – mario

回答

1

结果如预期。但我猜你要放置print_r()外循环:;)

while ($row = $results->fetch_assoc()) { 
    if($row["status"] == 1) { 
     $total[] = $row["to_win"]; 
    } 
} 

print_r($total); 

但是不管,因为这很容易,我给你一个建议。来自数据库查询的结果是字符串,尽管SQL列类型可能是INTEGER。虽然在这个简短的例子,它会工作,因为你希望这是一个很好的做法,检查正确的类型。因此,声明应该是:

if($row["status"] === '1') 
+0

或更好,但只是添加'where status = 1'到查询 – Orangepill

+0

@Orangepill当然:) – hek2mgl