使用 for 循环获取会话数组和现有 table 值的值

Using for loop to get the values for both session arrays and existing table values

我写了一个表单,其中有 10 个相同的输入,存储在一个数组中以循环遍历并相应地操作数据。输入的表格示例:

    <form id="sanFiber" action="insert.php" method="post">
    <table class="frame">
    <tr>
        <td><input name="host[]" class="field" type="text" size="15" 
           <?php if(isset($_SESSION['hostName'])){ echo "value='
           ".$_SESSION['hostName']."'";}?> /></td>
    </tr>
    <tr>
        <td><input name="host[]" class="field" type="text" size="15" 
        <?php if(isset($_SESSION['hostName'])){ echo"value='".$_SESSION['hostName']."'";}?> /></td>
   </tr>
       ...
   </form>

我已经能够创建一个 for 循环以将新值插入数据库中现有的 table,但是,我在尝试以相同方式执行 Select 查询时遇到了问题因为这些值不是预先存在的。我试过的循环只返回了第一个值。冲突是我必须循环会话数组和在数据库中找到的行。 $row 值的 for 循环部分工作得很好。会话循环是我的问题所在。我的Select查询和for循环如下:

<?php 
include ("connect.php");
session_start();

$query = "SELECT * FROM cable_request_san_fiber_detail WHERE cable_request_id = '".$id."'"; 

$result = mysqli_query($conn, $query);

while ($row = mysqli_fetch_assoc($result)) {
    $label[]=$row['cable'];
}       
for ($i=0, $n=0; $i<count($label), $n<count($_SESSION['hostName']); $i++, $n++){
    $_SESSION['hostName'][$n]=$label[$i];
}
    header('Location:Table.php');
$conn->close();
?>

在我的 for 循环中,我结合了两种不同的循环:一种用于计算和遍历所有会话变量,另一种用于遍历数据库 table 中的所有行。有什么方法可以同时正确执行两个 for 循环,还是我应该分别执行它们?

你在一个数组中....试图将数组作为字符串回显。在循环中做 echo( $res= array_shift($_SESSION['hostName'])?$res:'';

$label有意义吗?

而不是:

while ($row = mysqli_fetch_assoc($result)) {
    $label[]=$row['cable'];
}       
for ($i=0, $n=0; $i<count($label), $n<count($_SESSION['hostName']); $i++, $n++){
    $_SESSION['hostName'][$n]=$label[$i];
}

为什么不是一个循环而不是两个循环:

// Clear old hostnames so you don't end up with duplicates
$_SESSION['hostName'] = array();
while ($row = mysqli_fetch_assoc($result)) {
    $_SESSION['hostName'][] = $row['cable'];
}

在 HTML 中输出时,您可能希望遍历数组:

<?php
foreach($_SESSION['hostName'] as $hostname) {
?>
    <tr>
        <td>
            <input name="host[]" class="field" type="text" size="15" value="<?= $hostname ?>" />
        </td>
    </tr>
<?php
}
?>