使用外键mysql php

时间:2018-10-10 16:39:23

标签: php mysql

See atch pls

Table user:
- user_id
- user_name
- (other info fields that doesn't matter for 
Table item:
- item_id
- item_name
- (other info fields that doesn't matter for now)

所附图片中的所有字段均来自ITEM表,但最后一个显示“ Colaborador”的字段

更新: 抱歉, 关键是这样的: 我有2个表格,项目和用户 我想在Items表上注册电子设备(例如,如果我买手机,我想在该表上注册),然后将该项目(在这种情况下为手机)归因于用户,并进行注册归因于用户的项目,我需要将2个表与我已经拥有的外键匹配,但要点是,我不想输入user_id(即外键),但我想输入用户NAME 希望这次我能说清楚自己

PHP代码

if ($valid) {
        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO ativos (item,comentario,data_aquisicao,localizacao,fabricante,modelo,anexo_a,numero_serie,imei,ativo_sap,evento,data_entrega,data_devolucao,data_estravio,id_user) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        $q = $pdo->prepare($sql);
        $q->execute(array($item,$comentario,$data_aquisicao,$localizacao,$fabricante,$modelo,$anexo_a,$numero_serie,$imei,$ativo_sap,$evento,$data_entrega,$data_devolucao,$data_estravio,$id_user));
        Database::disconnect();
        header("Location: index.php");
    }

1 个答案:

答案 0 :(得分:0)

没有看到您的PHP代码如何生成关联的MySQL查询,我们可能无法告诉您如何重构特定情况以实现此功能。

在更通用的级别上,您可能必须将用户名从输入表单传递到子查询中,作为INSERT语句的一部分:

INSERT INTO `item` (item_id, item_name, owner_id)
VALUES (1, 'abcdef', (SELECT user_id FROM user WHERE user_name = 'user1'))

在OP编辑后进行

编辑以添加PHP代码:

只需重构$ sql字符串查询以包括子查询即可:

    $sql = "INSERT INTO ativos (item,comentario,data_aquisicao,localizacao,fabricante,modelo,anexo_a,numero_serie,imei,ativo_sap,evento,data_entrega,data_devolucao,data_estravio,id_user) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT user_id FROM user WHERE user_name = ?))";

...应该返回与特定user_id关联的user_name并将ID值插入记录。