首页 > 解决方案 > 如何从第二个表中打印出我的所有数据

问题描述

我有一个带有两张桌子的 CRUD。

我已经完成了 CRUD 直到更新功能。

问题是我无法从第二个表中获取数据以正确打印出来。

我尝试过使用 for 循环、foreach 循环、while 循环以及我能想象到的所有循环来尝试循环遍历数据,但似乎没有任何效果。

if (isset($_GET['edit'])) {
    $id = $_GET['edit'];

    $result = $mysqli->query("SELECT * FROM personal where id=$id") or die($mysqli->error);

    while ($row = mysqli_fetch_assoc($result)) {

      $first_name = $row['first_name'];
      $last_name = $row['last_name'];
      $email = $row['email'];
      $phone_number = $row['phone_number'];

      $result2 = $mysqli->query("SELECT * FROM phone where user_id=$id") or die($mysqli->error);

    } while ($row2 = mysqli_fetch_assoc($result2)) {

      $phone_number2 = $row2['phone_number2'];
      var_dump($phone_number2);
    }
  }

这种情况下的 var_dump 会转储表中的所有数据,但是当我在编辑页面中获得相同的数据时,我只会得到最后一个结果。

编辑页面

<form class="col-md-8 col-sm-8 col-8" id="userform" name="form" action="process.php" method="post">
      <div class="form-group">
        <label class="col-lg">Name *</label>
          <input type="text" id="first_name" name="first_name" class="form-control" value="<?php echo $first_name; ?>" placeholder="Enter your name">
      </div>

      <div class="form-group">
        <label class="col-lg">Last name *</label>
          <input type="text" id="last_name" name="last_name" class="form-control" value="<?php echo $last_name; ?>" placeholder="Enter your last name" >
      </div>

      <div class="form-group">
        <label class="col-lg">Email *</label>
          <input type="email" id="email" name="email" class="form-control" value="<?php echo $email; ?>" placeholder="Enter your email" >
      </div>

      <div id="tel_number" class="form-group">
        <table class="table">
          <tr>
              <label>Phone numbers *</label>
              <input type="tel" id="phone_number" name="phone_number" class="form-control col-md-12" value="<?php echo $phone_number; ?>" placeholder="Enter your phone number" >
          </tr>
        </table>
        <table class="table">
          <tr>
              <?php if ($phone_number2 > 1): ?>
                <?php var_dump($phone_number2); ?>
                  <input type="tel" id="phone_number2" name="phone_number2" class="form-control col-md-12" value="<?php echo $phone_number2; ?>" placeholder="Enter your phone number" >
              <?php endif ?>
          </tr>
        </table>
      </div>
      <input type="hidden" name="update_id" value="<?php echo $post['id']; ?>">
      <button type="submit" class="btn btn-outline-primary col-lg" name="update">Update</button>
      </form>

我的目标是完整打印第二张表中的数据,无论一个用户有一个还是七个电话号码。

我得到的结果在下面的链接中提供: https ://www.dropbox.com/s/gt69ovv16r5lfh7/var_dump%28%24phone_number2%29.png?dl=0

标签: phpmysqli

解决方案


您得到的结果是有序的,因为在第二个循环中处理的 $result2 变量恰好是第一个循环中查询其 user_id 的最后一个用户的变量。为了获得为每个用户显示的电话号码,第二个循环应该在 $result2 变量设置后立即嵌套在第一个循环中。


推荐阅读