[英]Left join with a while loop PHP
我的代碼:
// variables
$user_id = $_SESSION['user_ID']; // session ID
// query db for user info
$get_info = $conn->prepare("SELECT users.user_id, users.first_name,
users.last_name,
users.country_origin,
users.looking_for,
users.exp_yrs,
users_skills.user_id,
users_skills.user_skill
FROM `users`
LEFT JOIN `users_skills`
ON users.user_id = ?
AND users_skills.user_id = users.user_id
$get_info->bind_param('s',$user_id);
$get_info->execute();
$row_user_details = $get_info->get_result()->fetch_Assoc(); // get result
<div class="col"><label class="input-filled"><input name="first_name" required value="<?php echo $row_user_details['first_name']; ?>">
<div class="col"><label class="input-filled"><input name="last_name" required value="<?php echo $row_user_details['last_name']; ?>">
While(" i can't use $row_user_details = $get_info->fetch_Assoc()"){
<div class="col"><label class="input-filled"><input name="last_name" required value="<?php echo $row_user_details['user_skill']; ?>">
}
我不確定要在 while () 中放入什么,因為我需要在 while 循環之外使用查詢的值,正如您從代碼中看到的那樣,我已經使用了 1-2 小時並且可以想不通
user_skill 是一個表中具有相同 user_id 的多個數據,其中名字和姓氏只是用戶行中的一個值
數據庫布局:
users_skills TABLE:
ID | user_id | user_skill |
1 | 1 | something1 |
2 | 1 | something2 |
3 | 1 | something3 |
4 | 2 | somethine4 |
5 | 6 | somethine5 |
users TABLE:
user_id | first_name | last_name | some more stuff |
1 | john | key | secrets |
session ID 為 = user_id // 在本例中為 1
此代碼已縮短,因此不會向公眾透露信息,但它的工作原理相同
您的查詢給出了這個:
http://sqlfiddle.com/#!9/418d0b/1
SELECT users.user_id, users.FirstName,
users.LastName,
users.Address,
users.City,
users_skills.user_id,
users_skills.skill
FROM `users`
LEFT JOIN `users_skills`
ON users.user_id = 1
AND users_skills.user_id = users.user_id
user_id FirstName LastName Address City user_id skill
1 Tom B Erichsen 4006 Stavanger Stavanger 1 Erichsen
1 Tom B Erichsen 4006 Stavanger Stavanger 1 Tom B
1 Tom B Erichsen 4006 Stavanger Stavanger 1 4006 Stavanger
2 Tom B John 4006 Stavanger Stavanger (null) (null)
3 Tom B Tes 4006 Stavanger Stavanger (null) (null)
4 Tom B Smith 4006 Stavanger Stavanger (null) (null)
5 Tom B Jane 4006 Stavanger Stavanger (null) (null)
你能告訴我你想達到什么目標嗎? 我假設您希望每個用戶都獲得他的技能? 還是僅適用於 Session 用戶?
為所有用戶獲得所有技能
SELECT users.user_id, users.FirstName,
users.LastName,
users.Address,
users.City,
users_skills.user_id,
users_skills.skill
FROM `users`
LEFT JOIN `users_skills`
ON users_skills.user_id = users.user_id
獲取用戶 1 的所有技能
users.LastName,
users.Address,
users.City,
users_skills.user_id,
users_skills.skill
FROM `users`
LEFT JOIN `users_skills`
ON users_skills.user_id = users.user_id
WHERE users.user_id = 1
只是一個想法:
我會 go 不同創建一個 function 獲得技能
function getUserSkills($userId){
global $conn;
$query = "SELECT * ";
$query .= "FROM users_skills ";
$query .= "WHERE user_id=" . $userId . " ";
$skillset = mysqli_query($conn, $query);
$results = array();
while ($skill = mysqli_fetch_assoc($skillset)){
$results[] = $skill;
}
return $results;
}
然后在需要用戶技能時調用它
$userid = sql_prep($_SESSION['userid']);
$skills = getUserSkills($userid);
foreach ($skill as $skills) {
echo $skill['skill_name']. '<br>';
}
getUser($user_id) 可能相同
好的,
所以,如果你已經有
<div class="col"><label class="input-filled"><input name="first_name" required value="<?php echo $row_user_details['first_name']; ?>">
<div class="col"><label class="input-filled"><input name="last_name" required value="<?php echo $row_user_details['last_name']; ?>">
問題是這條線
While(" i can't use $row_user_details = $get_info->fetch_Assoc()"){
<div class="col"><label class="input-filled"><input name="last_name" required value="<?php echo $row_user_details['user_skill']; ?>">
}
您可以將其重寫為
$user_skill = '';
while($row_user_details = $get_info->fetch_Assoc()) {
$user_skill .= ' '.$row_user_details['user_skill'];
}
<div class="col">
<label class="input-filled"><input name="last_name" required value="<?php echo $user_skill; ?>">
</div>
此外,您必須向 SQL 查詢添加 WHERE 子句才能僅獲取特定的 user_id。
這樣,您將在一列中獲得 $userskill。 我希望我明白你想做什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.