PHP Mysql 选择多个表不同的行名

标签 php mysql mysqli

我已经搜索过但没有找到我需要的东西,所以如果有人能帮助我..谢谢 allot。

我有 2 个相同的表,但表名不同,行名也不同,如下所示:

第一个名为admins的表:

admin_pid ,uname, admin_email , admin_fname , password , salt , admin_date_created , admin_date_create , admin_date_update ,admin_type , ip ,timestamp

另一个表有相同的数据,但行名称不同,如下所示:

第二个表称为用户:

userid, username,useremail,user_fname, password, salt,admin_user_create, user_date_created, user_date_update, userlevel, ip, timestamp

它们都包含用户详细信息,但一个表用于管理面板,另一个用于前端站点。

我在前台网站上从我的登录功能中选择:

  if ($stmt = $mysqli->prepare("SELECT userid, username ,userlevel, ip, password, salt FROM users WHERE useremail = ? LIMIT 1")) { 
      $stmt->bind_param('s', $email); // Bind "$email" to parameter.
      $stmt->execute(); // Execute the prepared query.
      $stmt->store_result();
      $stmt->bind_result($user_id, $username,$usrlvl, $ip , $db_password, $salt); // get variables

我想让他们成为在前端网站上工作的用户和管理员。

我可以同时选择它们以便在用户退出时从两个表中进行检查吗?

最佳答案

如果我没理解错你想使用UNION ALL

SELECT userid, username ,userlevel, ip, password, salt 
  FROM
(
    SELECT userid, username, userlevel, ip, password, salt, useremail
      FROM users 
     UNION ALL
    SELECT admin_pid, uname, admin_type, ip, password, salt, admin_email
      FROM admins
) q
 WHERE useremail = ? 

SELECT userid, username, userlevel, ip, password, salt
  FROM users 
 WHERE useremail = ? 
 UNION ALL
SELECT admin_pid, uname, admin_type, ip, password, salt
  FROM admins
 WHERE admin_email = ? 

注意:为了让它处理列数,它们的位置顺序和来自两个 SELECT 的数据类型应该相同。 admins 表中没有名称为 userlevel 的列,因此我即兴使用 admin_type 代替。如果不是这种情况,您需要消除该列或从该列的第二次选择中返回一个常量值。

这是 SQLFiddle 演示

关于PHP Mysql 选择多个表不同的行名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18584122/

相关文章:

php - PHP如何从两个不同的表中获取信息

PHP 在 PDOStatement::bindParam 中绑定(bind)重载属性时注意

mysql - 在 MariaDB 中禁用 LOCAL INFILE

php - MySQLi PHP 扩展问题

PHP:从简单的 html 表单向 MySQL 插入数据

php - 将文件写入临时位置

php - Wordpress wp_editor 不更新文本区域 $_POST 数据

mysql - SQL 对同一查询中的两个值求和

mysql - 是否可以通过 SQL 注入(inject)从 MySQL 中的 INSERT/SELECT 语句启动 UPDATE/DELETE 语句?

php - 如何在单个查询中运行多个查询?