与其他字段一起插入外键

vsikbqxv  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(304)

因此,我尝试用外键在php crud上插入数据,但不是输入数字(即fk),而是输入一个名称
我有以下代码:

  1. // Inserir os dados
  2. if ($valid) {
  3. $pdo = Dat abase::connect();
  4. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5. $sql = "INSERT INTO ativos (ativo,comentario,data_aquisicao,localizacao,fabricante,modelo,imei,numero_serie,ativo_sap,anexo_a,evento,data_evento,id_colaborador) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
  6. $q = $pdo->prepare($sql);
  7. $q->execute(array($ativo,$comentario,$data_aquisicao,$localizacao,$fabricante,$modelo,$imei,$numero_serie,$ativo_sap,$anexo_a,$evento,$data_evento,$id_colaborador));
  8. Database::disconnect();
  9. header("Location: index.php");
  10. }
  11. }

我已经试过了,但没用

  1. if ($valid) {
  2. $pdo = Dat abase::connect();
  3. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  4. $sql = "INSERT INTO ativos (ativo,comentario,data_aquisicao,localizacao,fabricante,modelo,imei,numero_serie,ativo_sap,anexo_a,evento,data_evento,id_colaborador) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? (SELECT id_colaborador FROM colaboradores WHERE nome = ?))";
  5. $q = $pdo->prepare($sql);
  6. $q->execute(array($ativo,$comentario,$data_aquisicao,$localizacao,$fabricante,$modelo,$imei,$numero_serie,$ativo_sap,$anexo_a,$evento,$data_evento,$id_colaborador));
  7. Database::disconnect();
  8. header("Location: index.php");
  9. }

笔记 id_colaborador 是外键吗

fsi0uk1n

fsi0uk1n1#

您最好传入id,但如果需要使用名称,则需要稍微更改插入的格式(请参阅插入。。。选择。。。

  1. INSERT INTO ativos (ativo,comentario,data_aquisicao,localizacao,fabricante,modelo,imei,
  2. numero_serie,ativo_sap,anexo_a,evento,data_evento,id_colaborador)
  3. SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, id_colaborador
  4. FROM colaboradores
  5. WHERE nome = ?

所以select将所有参数都作为值,然后它只从另一个表中选择id(id\u colaborador)。

相关问题