PHP单次迭代获取2行数据


PHP Get 2 data rows in single iteration

我试图在单次迭代中获得两个数据行:

$query = mysql_query("SELECT * FROM tbl_website_index")or die(mysql_error());

while($row = mysql_fetch_assoc($query)){
//returns single row`
}

html表格

单行2行

<tr>
    <td>data 1</td>  
    <td>data 2</td>
</tr>

首先将所有数据放入数组中。然后组成该数组多维数组。你可以在每个键中推两行之类的。

while($row = mysql_fetch_assoc($query)){
  $data[] = $row;
}
$last_data = array();
$key = 0;
for($i=0;$i<sizeof($data);$i++) {
  if($i%2 == 0)
  {
    $key++;
  } 
  $last_data[$key][] = $data[$i]; 
}

然后可以遍历html表。

<?php foreach ( $last_data as $key => $row) { ?>
<tr>
    <?php foreach ( $row as $k => $row1) { ?>
    <td> <?php echo $row1['field'] ?></td>
    <?php } ?>
</tr>
<?php } ?>

(建议使用mysqli_*而不是mysql_*来保持你的代码使用不赞成的扩展。)

我不确定你是否想要这个,但是试试:

<tr>
<?php
$query = mysql_query("SELECT * FROM tbl_website_index")or die(mysql_error());
while($row = mysql_fetch_assoc($query)){
?>
<td><?php echo $row['col'] ?></td>
<?php
}
?>

首先,请不要使用mysql_query,而是使用PDO。第二,你永远不会这么做。有几种方法可以使用引用(next())来实现这一点。但这是非常糟糕的。因此,我建议这样做:

$query = $this->db->prepare("select * from tbl_website_index");
$query->execute();
$data = array();
while ($row = $query->fetch(PDO::FETCH_OBJ))
{
 $data[] = $row->fieldName;
}
$data = "<li>" . implode("</li><li>", $data) . "</li>";
print "<ul>" . $data . "</ul>";

这将达到你想要做的。我还没有测试过