【问题标题】:How to fetch a table from MySQL in PHP如何在 PHP 中从 MySQL 中获取表
【发布时间】:2012-08-16 03:36:54
【问题描述】:

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

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

那么有人可以帮我解决这个问题吗?

【问题讨论】:

标签: php mysql


【解决方案1】:

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

这可能会更好:

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

【讨论】:

  • nope .. 我以前试过这个,但页面上显示的输出只是“数组”
  • @user1602152 那是因为你试图回显一个数组,这在 PHP 中是做不到的。请先用“print_r”命令替换“echo”,语法是 print_r($variableOrArray),所以不要忘记括号。然后,您将看到所需的值在您的数组中。各个值可以这样回显: for($i=0;$i"; }
  • 好吧,它仍然只给我一行..我想要我的视图文件中的所有行,这是我面临的主要问题,否则我的代码和你的代码一样,即只从表
【解决方案2】:

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

}

【讨论】:

  • nopes 也不起作用...我有这个错误 警告:为 foreach() 提供的参数无效
【解决方案3】:

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

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)
}

【讨论】:

  • 它只是给我输出 Array
【解决方案4】:

您的 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;

现在您可以遍历数组了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2015-02-18
    • 1970-01-01
    • 2015-03-29
    相关资源
    最近更新 更多