使fetch_assoc完全匹配fetch_all

时间:2016-02-16 15:36:10

标签: php mysql fetch

如何使用fetch_all完全匹配fetch_assoc的输出与循环?我已经在fetch_all周围构建了代码,但我的带有PHP 5.4的Bluehost服务器不足以运行它(我正在与他们谈论它)。这是我一直在使用的,它不起作用:

public function getAllRecords($query) {
  $results = array();
  $r = $this->conn->query($query) or die($this->conn->error.__LINE__);
  while ($row = $r->fetch_assoc()) {
    $results[] = $row;
  }

  return $results;
}

修改

此功能有效但只返回一个结果:

public function getOneRecord($query) {
  $r = $this->conn->query($query.' LIMIT 1') or die($this->conn->error.__LINE__);
  return $result = $r->fetch_assoc();    
}

2 个答案:

答案 0 :(得分:2)

要让$results包含与fetch_all完全相同的输出,您可以使用此循环:

while ($row = $r->fetch_assoc()) {
    $results[] = array_values($row);
}

或仅在循环中使用fetch_row

while ($row = $r->fetch_row()) {
    $results[] = $row;
}

答案 1 :(得分:0)

好的,我不知道为什么我的问题被投票,这是合法的。我之前使用fetch_assoc,将数组作为数组返回。我的所有函数都基于将这些数组解析为其键值。

fetch_assoc返回一个关联数组,在Javascript中将其解释为一个对象。当然,我的基于数组的解析函数不喜欢它,也意味着循环中的fetch_all不等同于fetch_row

等同于public function getAllRecords($query) { $results = array(); $r = $this->conn->query($query) or die($this->conn->error.__LINE__); while ($row = $r->fetch_row()) { $results[] = $row; } return $results; } 。正确答案:

@app.route('/add/<int:n1>,<int:n2>')
def add(n1,n2):
    sum = n1+n2
    return "%d" % (sum)