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

o0lyfsai  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(324)

我有两张table
具有id、user\ formofadress和多个附加字段的用户。字段user\u formofaddress包含表formofaddress的id
带有id的formofadress、formofadress和其他几个字段,例如id 1=mr、id 2=mrs。
用户表的记录由会话变量标识。
要输出的不是字段user\u formofaddress的id,而是表formofaddress.formofaddress\u德语的值(例如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 formofaddress”是因为我想输出这个表的mr或mrs,但是我还必须使用users表,因为session id也是users记录的id。。。
不是users表中的每条记录都有user\ formofddress的值(值1、2或null),但是formofaddress表中的每条记录都有一个固定值。
错误是:未定义的变量:用户\位于最后一行的formofadress
这是我第一次使用连接,不幸的是,我无法解决这个问题,即使经过长时间的搜索。
正确代码:

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

laximzn51#

你的电脑有问题 SQL 语法。你曾经 LEFT JOIN 加入 usersformofadressusers 有时跟不上,你可能会得到一个 NULL 价值观。我还清理了其他查询语法,使其更具可读性。
另外,检查数据库是否需要 INT 为了 $uid . 如果没有,则返回撇号 '' .

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

相关问题