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");
}
Noteid_colaborador
is the foreign key
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.