将字段存储在数组中并在php中显示

时间:2014-02-19 02:42:02

标签: php arrays

我有一个查询来获取所有不同的行。我想将它存储到一个数组并使用每个循环显示它。谁能帮我。提前谢谢。

这是我的代码:

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

3 个答案:

答案 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手册页,了解所有选项的列表:

http://php.net/manual/en/pdostatement.fetch.php

答案 1 :(得分:0)

如果你想一次一个地处理它们(几乎总是如此),那么你不需要全部处理它们并将它们放入内存中 - 当你拥有数千条记录时这会做坏事,并且没有任何好处。你正在读取它们,一次一个,并将它们放在一个数组中;然后你按照你把它们放入的确切顺序一次一个地读取数组,然后处理它们。

相反,请考虑将//display here循环中当前拥有的foreach代码直接放入while循环中。即使您在循环内部查询,这也可以正常工作。您也可以考虑修改查询,以便一次性获取所有数据,而不是获取数据的子集,然后获取其余的每行一次查询。

另外,我刚刚意识到你没有问过一个问题 - 你可能想在关闭之前解决这个问题:)

答案 2 :(得分:0)

while($effdatedist[] = $allsched->fetch(PDO::FETCH_ASSOC));

希望有所帮助