1

私は PHP の初心者で、MVC の基本を試しているところです。すべて順調に進んでいますが、MySQL からデータを取得して HTML テーブルにデータを入力する際に​​問題が発生します。

問題は、コードがテーブルの 1 つの行を返すだけであることです (そのテーブルには 3 つの行があります)。私は多くのことを試しましたが、現在、データを格納し、コントローラーに渡してからビューに渡すために配列を使用しています。

データと名前を取得する関数を持つクエリ クラス ファイル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();
}

このクエリのコントローラが name であるコントローラ クラス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 />";
}

このコードの出力にはエラーはありませんが、問題はテーブルの行が 3 つあるのに 1 行だけをフェッチしていることです。

誰でもこれで私を助けることができますか?

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に1行だけを割り当てています。代わりに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 に答える