如何从 mySQL 中的索引字段输出另一个 table 的值?

How to output a value of an other table from an indexed field in mySQL?

我有两个MySQLtables

  1. 具有 ID、user_formOfAdress 和几个附加字段的用户。字段 user_formOfAdress 包含 table formofadress

  2. 的 ID
  3. 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 JOINusers 连接到 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'];
 }