PHP如何使用类调用数据库中的所有值

时间:2015-06-27 06:31:45

标签: php html mysql

我有这张桌子 ID Tabs_Name 1份饮料 2食物 3控制台

我想得到所有的Tabs_Names值,但我找不到这样做的方法。我只得到第一个结果。这是我的代码

    class Tabs{
    public $ID = 0;
    public $Tab_Name = "";
    public $Tab_Count=0;

    public function __construct()
    {
    $servername = "****";
    $username = "****";
    $password = "****";
    $dbname = "****";
    $conn = new mysqli($servername, $username, $password, $dbname);

           if ($conn->connect_error)
           {
             die("Connection failed: " . $conn->connect_error);
           }
             $query = "SELECT ID, Tab_Name, Count(Tab_Name) As Tab_Count      FROM Dummie_tabs"; 
             //$query2 = "SELECT COUNT(Tab_Name) AS Tab_Count FROM   Dummie_tabs"; 
             $result = $conn->query($query);
             //$result2 = $conn->query($query2);

               if ($result->num_rows > 0) {
               $row = $result->fetch_assoc();

               $this->ID = $row["ID"];
               $this->Tab_Name = $row["Tab_Name"];
               $this->Tab_Count =$row["Tab_Count"];


                }
           else {
           echo "0 results";

         }
    }
    public function __destruct()
    {
     ;
    }
    public function setID($ID, $Tab_Count)
    {
     $this->ID = $ID;
     $this->Tab_Count= $Tab_Count;
    }
    public function getTab()
    {
    return $this->Tab_Name . $this->Tab_Count ."<br />";

   }          

   }

     $R = new Tabs();


    echo $R->getTab();

我需要从数据库中检索所有值

1 个答案:

答案 0 :(得分:1)

您可以执行以下两项操作之一来从数据库中获取数据 - 在类中与您在过程代码中执行的操作没有什么不同。

方法1:您不使用从数据库中提取单个记录的“fetch”,而是使用fetchall来获取查询的所有行。

方法2:使用循环迭代数据库中匹配的记录。这是代码中最常用的方法。

while($row = $result->fetch_assoc()) 
{
    $this->ID = $row["ID"];
    $this->Tab_Name = $row["Tab_Name"];
    $this->Tab_Count =$row["Tab_Count"];
}

此时编写代码的方式,它将迭代结果并每次替换属性的内容。您可以考虑将它们放入这样的数组中:

while($row = $result->fetch_assoc()) 
{
    $this->ID[] = $row["ID"];
    $this->Tab_Name[] = $row["Tab_Name"];
    $this->Tab_Count[] =$row["Tab_Count"];
}

编辑: 正如下面的评论所指出的,您的SQL查询也存在缺陷。您正在使用count(*)聚合函数 - 但尚未正确分组所选列:

SELECT ID, Tab_Name, Count(Tab_Name) As Tab_Count      
FROM Dummie_tabs
GROUP BY ID, Tab_Name