【问题标题】:Fetch Assoc - Add Data to Array Once Per IDFetch Assoc - 每个 ID 将数据添加到数组一次
【发布时间】:2013-07-06 14:32:03
【问题描述】:

我正在查询一个简单的数据库,我正在使用以下 PHP 代码...

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 而不是多个条目?

谢谢!

【问题讨论】:

  • 在最后一个print_r 输出中,您的数组中有所需的两个条目。这有什么问题?

标签: php mysql sql


【解决方案1】:

结果符合预期。但我猜你想将print_r() 放在循环之外:;)

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

print_r($total);

但是,由于这很容易,我会给你另一个建议。来自数据库查询的结果是字符串,尽管 SQL 列类型可能是 INTEGER。尽管在 this 简短示例中,它会按照您的意愿工作,这是检查正确类型的好习惯。所以声明应该是:

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

【讨论】:

  • 或者更好的是,只需将where status = 1 添加到查询中
猜你喜欢
  • 2015-04-08
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多