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