php检查mysql更新时数据是否为空

fjaof16o  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(373)

这个问题在这里已经有了答案

如何处理php中mysql的外键错误(1个答案)
两年前关门了。
所以,基本上我有一个用户可以选择雇员的输入,但是我需要给出一个警告或错误消息如果用户输入了一个数据库中不存在的雇员,我可以简单地检查用户的输入是否为空

if (empty($id_colaborador)) {
    $id_colaboradorError = 'Introduza o colaborador!';
    $valid = false;
}

但是我需要检查用户的输入是否也不存在,我怎么做呢?
我的查询如下所示:

if ($valid) {

    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "UPDATE ativos 
                SET 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 = ? LIMIT 1
                                      ) 
            WHERE id_ativo = ?";

    $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,$id)
                );

当用户输入一个不存在的雇员时,页面会给我一个错误(显然)
致命错误:未捕获pdoexception:sqlstate[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败。。。
我需要用一个简单的“找不到用户,请选择一个已经存在的”或者类似的东西来替换这个错误

unftdfkk

unftdfkk1#

根据您所说的内容,您需要首先使用单独的select查询检查用户是否存在,例如:

$stmt = $pdo->prepare("SELECT count(*) FROM colaboradores  WHERE nome = ?");
$stmt->execute([$id_colaborador]);
$count = $stmt->fetchColumn();

if ($count > 0) {
    //Update
} else {
    //throw error message
}

这样,您的第一步就是检查db是否存在用户,然后(如果计数大于0表示存在)运行update查询。

相关问题