我是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;
现在,您可以循环访问数组。