Não consigo entender esse erro! Alguém poderia me ajudar

Pessoal, eu estou fazendo um CRUD e quando é para enviar a edição dos dados, mostra esse erro:

Warning : Undefined array key “id” in C:\xampp\htdocs\CRUD\salvar-usuario.php on line 35

Fatal error : Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘data_nasc=’’, email=‘flavia@gmail.com’, se…’ at line 2 in C:\xampp\htdocs\CRUD\salvar-usuario.php:37 Stack trace: #0 C:\xampp\htdocs\CRUD\salvar-usuario.php(37): mysqli->query(‘UPDATE usuarios…’) #1 C:\xampp\htdocs\CRUD\index.php(44): include(‘C:\xampp\htdocs…’) #2 {main} thrown in C:\xampp\htdocs\CRUD\salvar-usuario.php on line 37

Irei colocar o código inteiro, mas a mensagem diz que o erro é na parte do case ‘editar’

<?php
switch ($_REQUEST["acao"]) {
    case 'cadastrar':
        $nome = $_POST["nome"];
        $data_nasc = $_POST["data_nasc"];
        $email = $_POST["email"];
        $senha = md5($_POST["senha"]);

        $sql = "INSERT INTO usuarios (nome, 
        data_nasc, email, senha) VALUES
        ('{$nome}', '{$data_nasc}', '{$email}', 
        '{$senha}')";
        
        $res = $conn-> query($sql);

        if($res==true){
            print "<script>alert('Cadastro com sucesso!);'</script>";
            print "<script>location.href='?page=listar;'</script>";
        }else{
            print "<script>alert('Não foi possível cadastrar!);'</script>";
            print "<script>location.href='?page=listar';'</script>";
        }
        break;
    
    case 'editar':
        $nome = $_POST["nome"];
        $data_nasc = $_POST["data_nasc"];
        $email = $_POST["email"];
        $senha = md5($_POST["senha"]);

        $sql = "UPDATE usuarios SET nome='{$nome},'
                data_nasc='{$data_nasc}', 
                email='{$email}',
                senha='{$senha}' 
                WHERE id=".$_REQUEST["id"];        
        
        $res = $conn->query($sql);

        if($res==true){
            print "<script>alert('Editado com sucesso!);'</script>";
            print "<script>location.href='?page=listar';'</script>";
        }else{
            print "<script>alert('Não foi possível editar!);'</script>";
            print "<script>location.href='?page=listar';'</script>";
        }
        break;

    case 'excluir':
        
        $sql = "DELETE FROM usuarios WHERE id=".$_REQUEST["id"];

        $res = $conn-> query($sql);
        
        if($res==true){
            print "<script>alert('Ecluído com sucesso!);'</script>";
            print "<script>location.href='?page=listar';'</script>";
        }else{
            print "<script>alert('Não foi possível excluir!);'</script>";
            print "<script>location.href='?page=listar';'</script>";
        }
        break;    
}

Você colocou o apóstrofo depois da vírgula, provavelmente isso causa o erro de sintaxe SQL.

1 curtida

Muito obrigado! Eu corrigir isso que tu marcou mas mesmo assim continua o mesmo erro

Certo, e você já avaliou qual é o erro?

É o mesmo erro anterior? É diferente? Como está seu código agora? Qual o log do erro?

Continua o mesmo erro que tá lá em cima, antes do código.

Não sei o porquê dele não está reconhecendo isso aqui

Não entendo muito, mas já reparou no fato do “$_REQUEST[‘acao’]” pedir uma ação do tipo ‘cadastrar’,‘editar’ e ‘excluir’ mas ser usado para um '$_REQUEST[“id”] ?

Então, esse switch vai receber/salvar as ações que foram criadas, no caso ‘cadastrar’, ‘editar’ e ‘excluir’

Já o $_REQUEST[“id”] é dado que vem da url, e nisso esse $_REQUEST[“id”] já foi colocado em outro arquivo php que eu fiz para que os dados da tabela no MySQL apareça na tela e que o usuário consiga editar suas informações. Ou seja, o REQUEST[“id”] já foi criado e o erro fala que não está reconhecendo

Coloca um debug e pega o SQL que está sendo gerado para avaliar o problema.

Consegui resolver o erro!! Muito obrigado!