使用PHP PDO比较两个MySQL表根据行是否存在从任一表返回列数据

5lwkijsr  于 11个月前  发布在  Mysql
关注(0)|答案(1)|浏览(98)

我尝试运行一些PHP来根据ID搜索表2,如果ID存在,则返回该行的数据。
我的结构是这样的
用户登录- ID||用户名||电子邮件||通过||创建日期
user_details - ID(与上述ID相同)||用户名||姓氏||地址是...
对于管理面板,我试图显示表1中的用户“用户名”,如果他们没有完成完全注册。因此,如果他们的ID不在表2中,则显示表1中的用户名。
我还在学习,我知道我的代码不是正确的方法。它确实有效,但我觉得它很草率,而且我很难找到比较两个表的最佳方法的资源。
//在数据库中搜寻user_details数据表中的id,如果没有,则传回username。

$userID = $_SESSION['$userID'];
                              
// PDO Prepaired prepair and execute 
$navBarsql = 'SELECT * FROM user_details WHERE user_login_ID = :user_login_ID;';
                              
$stmt = $pdo->prepare($navBarsql);
$stmt->execute([
    'user_login_ID' => $userID,
                              
]);
                              
$row = $stmt->fetch(PDO::FETCH_ASSOC);
                              
if($row){                      
    echo $row['userFname'] . " " . $row['userLName'];                     
}else{
    // PDO Prepaired prepair and execute 
    $navBarsql = 'SELECT * FROM user_login WHERE id = :id;';
                                      
    $stmt = $pdo->prepare($navBarsql);
    $stmt->execute([
        'id' => $userID,                             
    ]);
                                      
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    // search user db for username

    echo ucfirst($row['username']);                          
}

字符串
我看到过一些疯狂的长sql语句,看起来你可以在查询中做到这一点,但我的尝试没有得到任何地方。
非常感谢您的帮助!

lmvvr0a8

lmvvr0a81#

使用LEFT JOIN将它们合并组合成一个查询。如果user_details中没有行,则这些列将是NULL

$userID = $_SESSION['$userID'];
                              
// PDO Prepaired prepair and execute 
$navBarsql = 'SELECT ul.username, ud.userFname, ud.userLname
              FROM user_login AS ul
              LEFT JOIN user_details AS ud ON ul.id = ud.user_login_ID
              WHERE ul.id = :user_login_ID;';
                              
$stmt = $pdo->prepare($navBarsql);
$stmt->execute([
    'user_login_ID' => $userID,
]);
                              
$row = $stmt->fetch(PDO::FETCH_ASSOC);
                              
if($row){
    if ($row['userFname'] !== null) {
        echo $row['userFname'] . " " . $row['userLName'];
    } else {
        echo ucfirst($row['username']);
    }
} else {
    echo "UserID $userID not found.";
}

字符串

相关问题