如何在PHP中从MySQL获取表


How to fetch a table from MySQL in PHP

我是PHP的新手,我只是在尝试MVC的基础知识。一切顺利,但是在从MySQL获取数据并用它填充HTML表时遇到了问题。

问题是我的代码只返回表的一行(该表中有三行)。我已经尝试了很多事情,现在我正在使用数组来存储数据并传递给控制器,然后传递到视图。

具有获取数据和名称queryDB函数的查询类文件:

 public function getdata(){
    $connectObj=new dbConnection(); 
    //its a connection class where mysql connection has been made
    if(!$connectObj->connectDB()){
        echo "Error in mysql: ".mysql_error();
        return false;
    }
    else{
        $query = "select * from tbl_cartypes";
        $result = mysql_query($query) or die("Error: ".mysql_error());
        $data = array();
        while($row = mysql_fetch_assoc($result)){
            $data[0] = $row['car_id'];
            $data[1] = $row['car_name'];
            $data[2] = $row['car_model'];
            $data[3] = $row['car_type'];
            $data[4] = $row['car_price'];
        }
          return $data;
    }
     $connectObj->closeDB();
}

此查询的控制器名称为 carController.php 的控制器类:

public function getAllData(){
    $runQuery = new queryDB();
    $array = array();
    $array = $runQuery->getTickets($userid);
    return $array;
}

最后的视图,我只是在回显我的数据:

include "$path/controllers/carController.php";
$ticket = new carController();
$array = array();
$array = $ticket->getdata();
for($i=0;$i<count($array);$i++){
        echo $array[$i]."<br />";
}

此代码的输出没有错误,但问题是它只是获取表的一行,而有三行。

所以有人可以帮助我吗?

它正在获取所有行,但您将所有数据保存到同一位置($data[0]$data[5] ),因此除了最后一行之外的所有内容都被覆盖。

这可能会更好:

 $data = array();
 while($row = mysql_fetch_assoc($result)) {
     $data[] = $row;
 }

使用 PDO 和其他人发布的内容尝试使用它

public function getdata(){
  $connectObj=new dbConnection(); 
  //its a connection class where mysql connection has been made
  if(!$connectObj->connectDB()){
      echo "Error in mysql: ".mysql_error();
      return false;
  }
  else{
  $query =  'select * from tbl_cartypes';
  $result = $connectObj->query($query);
  $data = array()
  foreach ($result as $row){
   array_push($data, $row)
  }
  return $data;
}
 $connectObj->closeDB();

}

您的问题是您正在覆盖上一个表的值:

while($row = mysql_fetch_assoc($result)){
    $data[0] = $row['car_id'];
    $data[1] = $row['car_name'];
    $data[2] = $row['car_model'];
    $data[3] = $row['car_type'];
    $data[4] = $row['car_price'];
}

这只会在该表中的键上重写最后一行数据。

尝试:

$data = array()
while($row = mysql_fetch_assoc($result)){
    array_push($data, $row)
}
你的 while 循环

只将一行分配给数组 $data in while 循环,试试这个

 while($row = mysql_fetch_assoc($result)){
            $data["car_id"][] = $row['car_id'];
            $data["car_name"][] = $row['car_name'];
            $data["car_model"][] = $row['car_model'];
            $data["car_type"][] = $row['car_type'];
            $data["car_price"][] = $row['car_price'];
        }
  return $data;

现在,您可以循环访问数组。