我有一个查询来获取所有不同的行。我想将它存储到一个数组并使用每个循环显示它。谁能帮我。提前谢谢。
这是我的代码:
//PREPARE QUERIES
//distinct effective dates
$allsched = $this->prepare("SELECT DISTINCT effective_date,status,in_use FROM `working_sched` WHERE `emp_id` = ? ");
$allsched->bind_param('i', $emp_id);
$allsched->execute();
$allsched->bind_result($distinctdate,$stat,$in_use);
$allsched->store_result();
$numrows = $allsched->num_rows;
//check if query turned empty!
if($numrows == 0){
echo '<div id="error">Sorry no Working Schedule to be displayed for <b><i></i></b></div>';
}else{
//if query returned TRUE
$effdatedist = array();
while($allsched->fetch()){
$effdatedist[] = $distinctdate; //store the effective dates in an array
$effdatedist['stat'] = $stat;
}
$allsched->close();
}
在我的foreach循环中,我想显示以下内容
foreach($effdatedist as $a){
//display here
date, status, in_use
}
答案 0 :(得分:0)
首先,您要将此添加到while循环中:
while($result = $allsched->fetch(PDO::FETCH_ASSOC)){
array_push($effdatedist, $result);
}
其中fetch(PDO :: FETCH_ASSOC)返回由结果集中返回的列名索引的数组。因此,您可以使用类似的内容打印您的值
foreach($effdatedis as $row){
echo "Date: " . $row["effective_date"];
echo "Status: " . $row["status"];
echo "In Use: " . $row["in_use"];
}
如果这不是fetch()方法返回的数组类型,那么请查看下面的php手册页,了解所有选项的列表:
答案 1 :(得分:0)
如果你想一次一个地处理它们(几乎总是如此),那么你不需要全部处理它们并将它们放入内存中 - 当你拥有数千条记录时这会做坏事,并且没有任何好处。你正在读取它们,一次一个,并将它们放在一个数组中;然后你按照你把它们放入的确切顺序一次一个地读取数组,然后处理它们。
相反,请考虑将//display here
循环中当前拥有的foreach
代码直接放入while
循环中。即使您在循环内部查询,这也可以正常工作。您也可以考虑修改查询,以便一次性获取所有数据,而不是获取数据的子集,然后获取其余的每行一次查询。
另外,我刚刚意识到你没有问过一个问题 - 你可能想在关闭之前解决这个问题:)
答案 2 :(得分:0)
while($effdatedist[] = $allsched->fetch(PDO::FETCH_ASSOC));
希望有所帮助