-1

Olá, estou assistindo um video sobre como fazer CRUD com ajax e acabei ficando presa na parte do UPDATE, simplesmente não está funcionando e o código aparentemente está correto. Alguém pode me ajudar, por favor? (perdoa a identação do codKK eh urgencia)

Aqui está o formulário de Update [1]: https://i.sstatic.net/aj3Fe.png

Aqui está o Ajax para requisição do code.php [2]: https://i.sstatic.net/UNA2m.png

e aqui está o cod para o Update

if(isset($_POST['update_student'])) {

        $name = $_POST['name'];
        $email = $_POST['email'];
        $phone = $_POST['phone'];
        $course = $_POST['course'];
        $student_id = $_POST['student_id'];

        if($name == null || $email == null || $phone == null || $course == null) {
            $res = [
                'status' => 422,
                'message' => 'All fields are mandatory'
            ];

    
        echo json_encode($res);

        return;

        }

      

    try {

    $query =  "UPDATE students SET name='$name', email='$email', phone='$phone', course='$course' WHERE idstudents='$student_id'"; 

        $stmt = $dbc->prepare($query);
        $stmt->bindParam(":name", $name);
        $stmt->bindParam(":email", $email);
        $stmt->bindParam(":phone", $phone);
        $stmt->bindParam(":course", $course);
        $stmt->bindParam(":idstudents", $student_id);


        $stmt->execute();
        var_dump($stmt);

    $res = [
        'status' => 200,
        'message' => 'Student Updated Successfully'
    ];

    echo json_encode($res);
    return;

}
catch(PDOException $e) {
    $error = [
        'status' => 500,
        'message' => 'Database Error: '. $stmt->errorInfo()[2]
    ];

    echo json_encode($error);

}

}

2
  • Você está fazendo bind dos parâmetros mas não está usando as variáveis no comando de UPDATE em si. Deveria estar, porque a interpolação de valores do seu código atual dá margem para ataques de injeção de SQL.
    – bfavaretto
    Commented 27/09/2023 às 14:43
  • Por favor, esclareça seu problema ou forneça detalhes adicionais a fim de destacar exatamente o que você precisa. Da forma como está escrito atualmente é difícil dizer com exatidão o que você está perguntando.
    – Comunidade Bot
    Commented 30/09/2023 às 15:22

1 Resposta 1

-1

Como você fez o bindParam, precisa utilizá-lo no código do Update, até mesmo por questões de segurança como mencionado pelo @bfavaretto. Pode fazer algo assim:

$query =  "UPDATE students SET name= :name, email= :email, phone= :phone, course= :course WHERE idstudents= :idstudents"; 

$stmt = $dbc->prepare($query);
$stmt->bindParam(":name", $name);
$stmt->bindParam(":email", $email);
$stmt->bindParam(":phone", $phone);
$stmt->bindParam(":course", $course);
$stmt->bindParam(":idstudents", $student_id);

$stmt->execute();
var_dump($stmt);

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .