gpt4 book ai didi

php - 如何从 mySQL 中的索引字段输出其他表的值?

转载 作者:行者123 更新时间:2023-11-29 18:04:02 27 4
gpt4 key购买 nike

我有两个 MySQL 表

  1. 具有 id、user_formOfAdress 和一些附加字段的用户。字段user_formOfAdress包含表formofadress的id

  2. formofadress 包含 id、formOfAdress_german 和多个附加字段,例如 id 1 = 先生,id 2 = 女士

用户表的记录由 session 变量标识。

为了不输出 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”,因为我想输出该表的先生或女士,但我还必须使用用户表,因为 session ID 也是用户记录的 id ...

并非 users 表中的每个记录在 user_formOfdAdress 中都有一个值(值 1、2 或 NULL),但 formofadress 表中的每个记录都有一个固定值。

错误是: undefined variable :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 JOINusers加入到formofadress,而users有时无法关注,您可能会得到一个NULL 值。我还清理了您的其他查询语法,使其更具可读性。

此外,检查数据库是否需要 $uidINT。如果不是,则返回撇号''

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'];
}

关于php - 如何从 mySQL 中的索引字段输出其他表的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48075888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com