2016-03-16 47 views
-1

我有以下代码调用一个DB函数,它从表中检索所有行,然后在JSON中回显它们。PHP Sql,返回一行

$key = $db->getKeyPermissions(); 

    if ($key != false) { 
     // use is found 
     $response["error"] = FALSE; 
     $response["key"]["endpoint_name"] = $key["endpoint_name"]; 
     $response["key"]["live"] = $key["live"]; 
     $response["key"]["activity_name"] = $key["activity_name"]; 
     echo json_encode($response); 
    } else { 

这是DB函数

public function getKeyPermissions() 
    { 
     $stmt   = $this->conn->prepare("SELECT * FROM key_permissions WHERE 1"); 
     if ($stmt->execute()) { 
      $key = $stmt->get_result()->fetch_assoc(); 
      $stmt->close(); 
      return $key; 
     } else { 
      return NULL; 
     } 
    } 

这一切工作,但它仅返回第一行,然后停止罚款。阅读你必须循环fetch_assoc(),但我无法得到这个工作。我希望将所有行都推入$key并返回,但所有尝试都会导致数组转换和非对象错误。一路上有人能帮助我吗?

编辑:

public function getKeyPermissions() 
{ 
    $stmt   = $this->conn->prepare("SELECT * FROM key_permissions WHERE 1"); 
    if ($stmt->execute()) { 
     $key = array(); 

     while($row = $stmt->get_result()->fetch_assoc()) { //Call to a member function fetch_assoc() on a non-object 
      $key .= $row; // Array to string conversion 
     } 

     $stmt->close(); 
     return $key; 
    } else { 
     return NULL; 
    } 
} 
+1

'而($键= $ stmt-> get_result( ) - > fetch_assoc()){...}'? ......就在我头顶 - 尽管没有错误陷阱。 – CD001

+0

@ CD001之前尝试过,但是我返回了一个非对象的数组转换错误和fetch_assoc错误。我用我的新代码编辑我的文章,并在返回错误的行后面添加注释。 –

+1

'在非对象上调用成员函数fetch_assoc(),在这种情况下'get_result()'返回false。 – CD001

回答

3

要拨打get_result恰好一次fetch_assoc只要有行:

$result = $stmt->get_result(); 
$key = array(); 

while ($row = $result->fetch_assoc()) { 
    $key[] = $row; 
} 

return $key;