如何从 mySQL 中的索引字段输出另一个 table 的值?
How to output a value of an other table from an indexed field in mySQL?
我有两个MySQLtables
具有 ID、user_formOfAdress 和几个附加字段的用户。字段 user_formOfAdress 包含 table formofadress
的 ID
formofadress with id, formOfAdress_german 和几个附加字段,例如 id 1 = Mr., id 2 = Mrs.
用户 table 的记录由 Session 变量标识。
不输出字段的 id user_formOfAdress 而是 table 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" 因为我想输出这个 table 的 Mr. 或 Mrs.,但是我也必须使用用户 table 因为 Session ID 也是用户记录的 id ...
并非用户 table 中的每条记录在 user_formOfdAdress 中都有一个值(值 1、2 或 NULL),但 formofadress table 中的每条记录都有一个固定值。
错误是:
未定义的变量: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
值。我还清理了您的其他查询语法,使其更具可读性。
此外,请检查数据库是否需要 INT
$uid
。如果不是,则 return 撇号 ''
.
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'];
}
我有两个MySQLtables
具有 ID、user_formOfAdress 和几个附加字段的用户。字段 user_formOfAdress 包含 table formofadress
的 ID
formofadress with id, formOfAdress_german 和几个附加字段,例如 id 1 = Mr., id 2 = Mrs.
用户 table 的记录由 Session 变量标识。
不输出字段的 id user_formOfAdress 而是 table 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" 因为我想输出这个 table 的 Mr. 或 Mrs.,但是我也必须使用用户 table 因为 Session ID 也是用户记录的 id ...
并非用户 table 中的每条记录在 user_formOfdAdress 中都有一个值(值 1、2 或 NULL),但 formofadress table 中的每条记录都有一个固定值。
错误是: 未定义的变量: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
值。我还清理了您的其他查询语法,使其更具可读性。
此外,请检查数据库是否需要 INT
$uid
。如果不是,则 return 撇号 ''
.
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'];
}