PHP为什么我的foreach循环只给出1个结果?

时间:2018-03-13 08:53:35

标签: php variables pdo foreach

为什么我的foreach只显示1个结果,为什么不显示两个结果,因为它清楚地显示在我的数据库中有2个结果与Com_Id 1,但它仍然只给我1个结果。这就是我的数据库的样子database

这是我得到的结果

enter image description here

$id = $_GET['view'];

mycode的:

<?php
    $sql = "SELECT * FROM IA_Monitor WHERE Com_ID = :id";
    $query = $conn->prepare($sql);
    $query->execute(array(':id' => $id));
    while($row = $query->fetch(PDO::FETCH_ASSOC)){
        $mon_comid = $row['Com_ID'];
        $mon_barcode[0] = $row['Barcode'];
        $mon_merk = $row['Merk'];
        $mon_type = $row['Type'];
        $mon_inch = $row['Inch'];
        $mon_a_dat = $row['Aanschaf_dat'];
        $mon_a_prijs = $row['Aanschaf_waarde']; 
    }
$monnewDate = date("d-m-Y", strtotime($mon_a_dat));
if($id==$mon_comid){
foreach($mon_barcode as $key => $value){
    ?>
    <title><?php echo $value; ?></title>
    <table>
        <tr><td>Monitorbarcode: </td><td><?php echo $value;?></td></tr>
        <tr><td>Merk: </td><td><?php echo $mon_merk;?></td></tr>
        <tr><td>Type: </td><td><?php echo $mon_type;?></td></tr>
        <tr><td>Inch: </td><td><?php echo $mon_inch;?></td></tr>
        <tr><td>Aanschaf datum: </td><td><?php echo $monnewDate;?></td></tr>
        <tr><td>Aanschaf waarde: </td><td><?php echo "&euro;".number_format((float)$mon_a_prijs, 2, '.', '')."";?></td></tr>
    </table>
    <?php
}}else{
    echo "<i>Geen monitoren gevonden</i>";
}
?>

有没有人知道它为什么不起作用,你可以帮助我理解并帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:-1)

我认为您不必在while循环中定义变量。以下内容为您节省了一些代码行,如果您的数据库字段名是明确的,那么您的代码将不会是一团糟:

$sql = "SELECT * FROM IA_Monitor WHERE Com_ID = :id";
$query = $conn->prepare($sql);
$query->execute(array(':id' => $id));
$rows = $query->fetchAll(PDO::FETCH_ASSOC);

$value = count($rows);
if ($value != 0)
foreach($rows as $row){
    $monnewDate = date("d-m-Y", strtotime($row['Aanschaf_dat']));
    ?>
    <title><?php echo $value; ?></title>
    <table>
        <tr><td>Monitorbarcode: </td><td><?php echo $row['Barcode'];?></td></tr>
        <tr><td>Merk: </td><td><?php echo $row['Merk'];?></td></tr>
        <tr><td>Type: </td><td><?php echo $row['Type'];?></td></tr>
        <tr><td>Inch: </td><td><?php echo $row['Inch'];?></td></tr>
        <tr><td>Aanschaf datum: </td><td><?php echo $monnewDate; ?></td></tr>
        <tr><td>Aanschaf waarde: </td><td><?php echo "&euro;".number_format((float)$row['Aanschaf_waarde'], 2, '.', '')."";?></td></tr>
    </table>
    <?php
}else{
    echo "<i>Geen monitoren gevonden</i>";
}

此代码应该有效。将值添加到数组,如$ rows here