因此,基本上,我有一个输入,用户可以选择该员工,但是如果用户输入的员工需要输入警告或错误消息, 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无法添加或更新子行:外键约束失败...
我需要用一个简单的“ 未找到用户,请选择一个已经存在的用户。”或类似的东西替换该错误。
答案 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表示存在)运行更新查询。