插入并从php中选择

时间:2017-12-01 15:19:00

标签: php mysql ionic-framework

我正在创建一个我有2个用户的应用程序。管理员和患者,因此每个帐户有2个用户。(管理员添加药物和其他待办事项列表供患者使用)。

管理员和患者都可以登录同一帐户,这就是为什么acc_id是他们之间的通用链接。

account_info(acc_id(pk, auto inc), p_username, a_username,password)

这些将在一页上输入。

之后,用户输入患者信息。他输入患者信息的地方。

patient_info ( p_username (pk), acc_id, p_fname,....) 

admin_info表与patient_info

几乎相同

如何以从account_info表中选择acc_id和p_username的方式编写插入代码,其余信息只是插入到表patient_info中。

到目前为止我的代码:

 $sql  = "INSERT INTO patient_info(p_username, acc_id, p_fname, p_lname, 
p_gender, p_condition, 
p_birthdate, p_emergencycontact) 
                SELECT p_username, acc_id
                    FROM account_info      
 VALUES(:p_fname, :p_lname, :p_gender, :p_condition, :p_birthdate, 
:p_emergencycontact)";

我是php新手请不要downvote我理解逻辑,但我不知道如何写它

1 个答案:

答案 0 :(得分:1)

不是为每个用户提供管理员密码和用户密码,而是使用类似于LDAP的权限模型,其中每个用户只有一次登录,但可以分配给一组标准角色,每个角色都包含特定权限

+----------+
| roles    |
+----------+
| roleid   |
| rolename |
+----------+

+---------------+
| role_join     |
+---------------+
| rolejoinid    |
| permission_id |
| role_id       |
+---------------+

+-----------------+
| permissions     |
+-----------------+
| permission_id   |
| permission_name |
+-----------------+

+---------------+
| user_join     |
+---------------+
| userjoinid    |
| user_id       |
| role_id       |
+---------------+

+------------------+
| user             |
+------------------+
| user_id          |
| username         |
| firstname        |
| lastname         |
| gender           |
| condition        |
| birthdate        |
| emergencycontact |
+------------------+

这允许您为角色分配许多权限,并为许多用户分配角色。

然后将值添加到用户表中(user_id应为primary_keyauto_increment):

 $sql  = "INSERT INTO user(username, firstname, lastname, 
gender, condition, birthdate, emergencycontact) 
 VALUES(:username, :firstname, :lastname, 
:gender, :condition, :birthdate, :emergencycontact)";

另外,您是否考虑过使用MySQL Workbench软件来设置数据库? (类似的工具可用于其他数据库。)

<强>子查询

如果由于某些其他原因确实需要执行子查询,那么另一个SO问题将解释如何执行此操作:

SQL INSERT INTO with subquery and value

带参数的子查询

所以如果你想要一个子查询和参数的混合供用户输入,我想它会是这样的:

INSERT INTO patient_info(p_username, acc_id, p_fname, p_lname, 
p_gender, p_condition, p_birthdate, p_emergencycontact) 
     SELECT p_username, acc_id, :p_fname, :p_lname, :p_gender, :p_condition, :p_birthdate, :p_emergencycontact
     FROM account_info      

(您只需将参数放入子查询中)