1

我是 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 />";
}

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

那么任何人都可以帮助我吗?

4

4 回答 4

2

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

这可能会更好:

 $data = array();
 while($row = mysql_fetch_assoc($result)) {
     $data[] = $row;
 }
于 2012-08-16T03:40:27.520 回答
1

使用 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();

}

于 2012-08-16T08:21:08.283 回答
0

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

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)
}
于 2012-08-16T03:42:03.930 回答
0

您的 while 循环仅将一行分配给数组 $data。在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;

现在您可以遍历数组。

于 2012-08-16T03:42:29.127 回答