[英]How to echo other field (column) value with the help of id value from mysql table
[英]How to output a value of an other table from an indexed field in mySQL?
我有兩個MySQL表
ID,user_formOfAdress和服務器附加字段的用戶。 字段user_formOfAdress包含表formofadress的ID
帶有id,formOfAdress_german和服務器附加字段的形式表,例如id 1 = Mr.,id 2 = Mrs.
用戶表的記錄由會話變量標識。
要輸出的不是字段user_formOfAdress的ID,而是要輸出表formofadress.formOfAdress_german的值(例如Mr.或Mrs.),我已編寫了此代碼:
if(array_key_exists("id", $_SESSION) && $_SESSION['id']){
$uid = $_SESSION['id'];
$link = mysqli_connect("localhost:3307", "root", "Dinah123", "proficrm");
$query = "
SELECT formofadress.ID AS formofadress_ID, formofadress.formOfAdress_german, users.ID, users.user_formOfAdress
FROM `formofadress`
LEFT JOIN users
ON formofadress.formofadress_ID = users.user_formOfAdress
WHERE `users.ID` = '".$uid."'
LIMIT 1
";
$result = mysqli_query($link, $query);
$record = mysqli_fetch_assoc($result);
$user_formOfAdress = $record['formOfAdress_german'];
}
“ FROM formofadress”是因為我想輸出此表的先生或太太,但是由於會話ID(這也是用戶記錄的ID),我還必須使用users表。
並非用戶表中的每個記錄都具有user_formOfdAdress中的值(值1、2或NULL),但是forfafadress表中的每個記錄都具有固定值。
錯誤是:未定義的變量:user_formOfAdress位於最后一行
這是我第一次使用JOIN,很遺憾,即使經過長時間的搜索,我仍然無法解決此問題。
正確的代碼:
if(array_key_exists("id", $_SESSION) && $_SESSION['id']){
$uid = $_SESSION['id'];
$link = mysqli_connect("localhost:3307", "root", "Dinah123", "proficrm");
$query = "
SELECT formofadress.ID, formofadress.formOfAdress_german, users.ID, users.user_formOfAdress
FROM formofadress
LEFT JOIN users
ON formofadress.ID = users.user_formOfAdress
WHERE users.ID = '".$uid."'
";
$result = mysqli_query($link, $query);
$record = mysqli_fetch_assoc($result);
$user_formOfAdress = $record['formOfAdress_german'];
}
您的SQL
語法有問題。 您使用LEFT JOIN
加入users
到formofadress
而users
有時無法跟隨,你很可能會得到一個NULL
值。 我還清理了您的其他查詢語法,使它更具可讀性。
另外,檢查數據庫是否期望$uid
的INT
值。 如果不是,則返回撇號''
。
if(array_key_exists("id", $_SESSION) && $_SESSION['id'])
{
$uid = $_SESSION['id'];
$link = mysqli_connect("localhost:3307", "root", "Dinah123", "proficrm");
$query = "SELECT u.ID, u.user_formOfAdress, f.ID, f.formOfAdress_german,
FROM users u LEFT JOIN formofadress f ON f.formofadress_ID = u.user_formOfAdress
WHERE u.ID = ".$uid." LIMIT 1";
// if database is not expecting `INT` for `u.ID` then return the apostrophes ' '
$result = mysqli_query($link, $query);
// mysqli_fetch_assoc returns case sensitive keys
$record = mysqli_fetch_assoc($result);
$user_formOfAdress = $record['formOfAdress_german'];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.