Ajuda com update

Estou com uma situação que não estou entendendo. No código para atualizar os dados, consigo recuperar os dados do banco nos campos, mas quando mando alterar, não acontece nada, nem mesmo mensagem de erro. O que estou fazendo de errado? Segue abaixo meu código.

<?php
    require 'database.php';
    
    $idFamiliar = null;
    
    if(!empty($_GET['idFamiliar']))
    {
        $idFamiliar = $_REQUEST['idFamiliar'];
    }
    if(null == $idFamiliar)
    {
        header("Location: index.php");
    }
    if(!empty($_POST))
    {
        $nameError = null;
        $dataError = null;
        
        $nomeFamiliar = $_POST['nomeFamiliar'];
        $dataNasc = $_POST['dataNasc'];
        
        $valid = true;
        if(empty($nomeFamiliar))
        {
            $nameError = "informar o nome";
            $valid = false;
        }
        
        if($valid)
        {
            $pdo = database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "UPDATE tb_familiar SET nomeFamiliar = ?, dataNasc = ? WHERE idFamiliar = ?";
            $q = $pdo->prepare($sql);
            $q->execute(array($nomeFamiliar, $dataNasc));
            database::disconnect();
            header("Location: index.php");
        }
    }
        else
        {
            $pdo = database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "SELECT * FROM tb_familiar WHERE idFamiliar = ?";
            $q = $pdo->prepare($sql);
            $q->execute(array($idFamiliar));
            $data = $q->fetch(PDO::FETCH_ASSOC);
            $nomeFamiliar = $data['nomeFamiliar'];
            $dataNasc = $data['dataNasc'];
            database::disconnect();
        }
?>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <script src="js/bootstrap.min.js"></script>
    </head>
    <body>
        <div class="container">
            <div class="span10 offset1">
                <h2>Atualizar dados</h2>
            </div>
            <form class="form-horizontal" action="update.php?idFamiliar<?php echo $idFamiliar ?>" method="post">
                <div class="control-group <?php echo !empty($nomeError)?'error':'';?>">
                    <label class="control-label">Nome Familiar</label>
                    <div class="controls">
                        <input name="nomeFamiliar" type="text" value="<?php echo !empty($nomeFamiliar)?$nomeFamiliar:'';?>">
                        <?php if(!empty($nameError)): ?>
                        <span class="help-inline"><?php echo $nameError;?></span>
                        <?php endif; ?>
                    </div>
                </div>
                <div class="control-group <?php echo !empty($dataError)?'error':'';?>">
                    <label class="control-label">Nascimento</label>
                    <div class="controls">
                        <input name="dataNasc" type="text" value="<?php echo !empty($dataNasc)?$dataNasc:'';?>">
                        <?php if(!empty($dataError)): ?>
                        <span class="help-inline"><?php echo $dataError;?></span>
                        <?php endif; ?>
                    </div>
                </div>
                <div class="form-actions">
                    <button type="submit" class="btn btn-success">Alterar</button>
                    <a href="index.php" class="btn">Voltar</a>
                </div>
            </form>
        </div>
    </body>
</html>

Obrigado.

Nessa linha você cria 3 placeholders (simbolo de ?)

$sql = "UPDATE tb_familiar SET nomeFamiliar = ?, dataNasc = ? WHERE idFamiliar = ?";

Mas nessa linha você só passa 2…

$q->execute(array($nomeFamiliar, $dataNasc));

Provavelmente não vai dar erro, porque essa instrução no banco vai retornar false e não uma Exception, pegou?

Colega,

mesmo fazendo a alteração conforme indicado, não está havendo a alteração dos dados, nem mesmo mensagem de erro.

Obrigado pelo retorno.

Acho que encontrei o erro no seu código…

Há uma confusão nessa linha…

action="update.php?idFamiliar<?php echo $idFamiliar ?>"

Quando se usa method=“post” não se manda nada pela url do jeito que você fez… para mandar um id precisa usar um campo hidden dentro do formulário…

<input type="hidden" name="idFamiliar" value="<?php echo $idFamiliar ?>">

E o action do seu form ficaria…

action="update.php"

E na página que vai pegar os dados usar…

$idFamiliar = $_POST['idFamiliar'];

Veja se resolve…

Ainda não resolveu…

1º - quando retiro da action=“update.php?idFamiliar<?php echo $idFamiliar ?>” para action="update.php, mostra o erro 404 - Página não encontrada.

2º - quando substituo de text para hidden, não mostrar os campos inputs, nem mesmo os dados cadastrados.

Mais uma vez, agradeço.

Esqueci de mencionar…

Este trecho: $idFamiliar = $_POST[‘idFamiliar’];, onde insiro?

Consegui resolver…

neste trecho do código: $q->execute(array($nomeFamiliar, $dataNasc, $idFamiliar));, estava informando o idFamiliar no lugar errado, ou seja, no início. Coloquei no final, de certo.

Muito obrigado pela ajuda.