doukuo9116 2018-10-25 09:52 采纳率: 100%
浏览 38
已采纳

插入外键与其他字段

so I've try to insert data on PHP CRUD with foreign key but instead of input the number (which is the FK) I want to input an NAME

I have the following code:

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

}

And I've already tried this but it won't work

    if ($valid) {
    $pdo = Dat abase::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $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 = ?))";
    $q = $pdo->prepare($sql);
    $q->execute(array($ativo,$comentario,$data_aquisicao,$localizacao,$fabricante,$modelo,$imei,$numero_serie,$ativo_sap,$anexo_a,$evento,$data_evento,$id_colaborador));
    Database::disconnect();
    header("Location: index.php");
}

Note
id_colaborador is the foreign key

  • 写回答

1条回答 默认 最新

  • doujingjiao0015 2018-10-25 09:58
    关注

    You would be better off passing in the ID, but if you need to use a NAME, then the format of your INSERT needs to be changed slightly (see INSERT ... SELECT...) ...

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

    So the SELECT has all of the parameters as values and then it just selects the ID (id_colaborador) from the other table.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了