如何从第二张表中打印出我所有的数据

时间:2019-05-06 16:31:47

标签: php mysqli

我有一个带有两个表的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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

问题解决了!!! 解: 检查编辑按钮的代码

$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 phone.phone_number2 FROM phone where user_id=$id") or die($mysqli->error);

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

      $phone_number2 = $row2['phone_number2'];
    }
  }

用于打印第二张表中所有数据的代码

<tr>
              <?php if ($phone_number >= 1): ?>
                <?php foreach ($result2 as $key => $value): ?>
                  <?php foreach ($value as $phone2 => $phone): ?>
                  <input type="tel" id="phone_number2" name="phone_number2" class="form-control col-md-12" value="<?php echo $phone; ?>" placeholder="Enter your phone number" >
                  <?php endforeach ?>
                <?php endforeach ?>
              <?php endif ?>
          </tr>