因此,我有两个表ativos
和colaboradores
,它们在更新页面上由id_colaborador (FK)
链接,我可以更改id_colaborador
,但不能更改更改要与该ID
匹配的write the name
的{{1}},但是我认为我需要多个ID
条件和WHERE
,有人可以帮助我吗?谢谢!
我有以下代码要更新
SELECT
更新
我已经尝试过将这两个语句分开:
$sql = "UPDATE ativos SET ativo = ?, comentario = ?, data_aquisicao = ?, localizacao = ?, fabricante = ?, modelo = ?, imei = ?,
numero_serie = ?, ativo_sap = ?, anexo_a = ?, evento = ?, data_evento = ?, SELECT id_colaborador FROM colaboradores WHERE nome = ? AND WHERE id_ativo = ?";
但这给了我以下错误:
警告:PDO :: prepare()期望参数2为数组,在第120行的C:\ xampp \ htdocs \ gestao \ Colaboradores \ ativo_update.php中给出的字符串
致命错误:未捕获错误:在C:\ xampp \ htdocs \ gestao \ Colaboradores \ ativo_update.php:121布尔值上调用成员函数execute()堆栈跟踪:#0 {main}抛出在C:\ xampp中第121行的\ htdocs \ gestao \ Colaboradores \ ativo_update.php
答案 0 :(得分:1)
您可以使用子查询,因为我了解您要按名称更新哪个名称不在同一表中,可以检查以下查询:
$sql = "UPDATE ativos SET ativo = ?, comentario = ?, data_aquisicao = ?, localizacao = ?, fabricante = ?, modelo = ?, imei = ?,
numero_serie = ?, ativo_sap = ?, anexo_a = ?, evento = ?, data_evento = ? WHERE id_colaborador in (SELECT id_colaborador FROM colaboradores WHERE nome = ?) and id_ativo = ?";
@ADyson在评论中有解决方案,该解决方案也通过名称更新了id_colaborador:
$sql = "UPDATE ativos SET ativo = ?, comentario = ?, data_aquisicao = ?, localizacao = ?, fabricante = ?, modelo = ?, imei = ?, numero_serie = ?, ativo_sap = ?, anexo_a = ?, evento = ?, data_evento = ?, id_colabarador = (SELECT id_colaborador FROM colaboradores WHERE nome = ? LIMIT 1) WHERE id_ativo = ?";
答案 1 :(得分:0)
此查询将允许您基于从表单输入的名称来更新ativos表中的id_colabarador:
$sql = "UPDATE ativos SET ativo = ?, comentario = ?, data_aquisicao = ?, localizacao = ?, fabricante = ?, modelo = ?, imei = ?, numero_serie = ?, ativo_sap = ?, anexo_a = ?, evento = ?, data_evento = ?, id_colabarador = (SELECT id_colaborador FROM colaboradores WHERE nome = ? LIMIT 1) WHERE id_ativo = ?";
请注意,如果colabarador表中的名称不是唯一的,则有可能偶然返回错误的ID。
但是,如评论中所述,我强烈建议您重新设计GUI,以便用户可以使用名称进行选择,但是该操作会在后台存储与所选记录相关的ID,以便该ID可以直接从表单传递到PHP,然后在SQL中代替子查询使用。这样会更强大,并且不会让您意外地误识别记录。