PHP检查MySQL UPDATE上的数据是否为空

时间:2018-12-19 09:02:52

标签: php mysql

因此,基本上,我有一个输入,用户可以选择该员工,但是如果用户输入的员工需要输入警告错误消息, DB上不存在,我可以使用

来简单地检查用户输入是否为空
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无法添加或更新子行:外键约束失败...

我需要用一个简单的“ 未找到用户,请选择一个已经存在的用户。”或类似的东西替换该错误。

1 个答案:

答案 0 :(得分:1)

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

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


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

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