testar dados antes de gravar no banco

Dúvida de php com mysql: Tenho uma rotina em php que está funcionando, gravando os dados numa tabela. Agora surgiu a necessidade de fazer dois testes antes da gravação, e eu não estou conseguindo ter idéia de como fazer, por isso vou postar no próprio código pra ver se entendem. O primeiro teste, é ver se o número escolhido, já foi selecionado (variável numero), e caso isso ocorra, não gravar. O outro teste é impedir que o mesmo usuário (usuário apostador)faça mais de uma aposta. Segue código:

// validação (bem simples, só pra evitar dados vazios) if (empty($ data_hora) || empty($ apostador) || empty($ telefone) || empty($ numero)) { echo “Volte e preencha todos os campos”; exit; } $ hoje = date(“d-m-Y H:i”); $ limite = (’08-03-2019 16:35′); if (strtotime($ hoje) >= strtotime($ limite)){ echo “Esgotado o horario limite. Aguarde para o próximo sorteio!”; exit; }

// a data vem no formato dd/mm/YYYY // então precisamos converter para YYYY-mm-dd

// insere no banco $ PDO = db_connect();

// Acredito que esse teste deva ser feito aqui, antes de gravar, mas é só um palpite, pois tô mais perdido do que padre (alguns) em boate

//verificar se apostador e numero já existem na tabela, e caso exista, retornar o fluxo

$ sql = “INSERT INTO palpites(data_hora, apostador, telefone, numero) VALUES(:data_hora, :apostador, :telefone, :numero)”; $ stmt = $ PDO->prepare($ sql); $ stmt->bindParam(‘:data_hora’, $ data_hora); $ stmt->bindParam(‘:apostador’, $ apostador); $ stmt->bindParam(‘:telefone’, $ telefone); $ stmt->bindParam(‘:numero’, $ numero);

if ($ stmt->execute()) { header(‘Location: index.php’); } else { echo “Erro ao cadastrar”; print_r($ stmt->errorInfo());