簡體   English   中英

如何從MySQL中的索引字段輸出另一個表的值?

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

我有兩個MySQL表

  1. ID,user_formOfAdress和服務器附加字段的用戶。 字段user_formOfAdress包含表formofadress的ID

  2. 帶有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加入usersformofadressusers有時無法跟隨,你很可能會得到一個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'];
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM