I made a function in php that uploads a video from a form. But when I press the submit button I got this error: Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'courses_id' doesn't have a default value in C:\Users\daan\schoolcode\wfflixgroup7\controllers\courses\uploadCourse.php:14 Stack trace: #0 C:\Users\daan\schoolcode\wfflixgroup7\controllers\courses\uploadCourse.php(14): PDOStatement->execute() #1 C:\Users\daan\schoolcode\wfflixgroup7\index.php(12): require('C:\Users\daan\s...') #2 {main} thrown in C:\Users\daan\schoolcode\wfflixgroup7\controllers\courses\uploadCourse.php on line 14.
Everything works perfect the video uploads and everything displays in the database(mariadb). But still got this error that the courses_id has no default value even though its primary key and auto increment. I tried to give it a default value but then the error still appears. Does someone know how to solve this?
My video upload function:
$config = require 'config.php';
$courses_name = $_POST['courses_name'];
$courses_description = $_POST['courses_description'];
$courses_category = $_POST['courses_category'];
$query = Connection::make($config['database'])->prepare("INSERT INTO courses(courses_name, courses_description, courses_category) VALUES(?, ?, ?)");
$query->bindParam(1, $courses_name, PDO::PARAM_STR);
$query->bindParam(2, $courses_description, PDO::PARAM_STR);
$query->bindParam(3, $courses_category, PDO::PARAM_STR);
$query->execute();
//File Upload
if (isset($_POST['submit'])){
    $maxsize= 104857600; //100MB in Bytes
}
if (isset($_FILES['file']['name']) && $_FILES['file']['name'] !=''){
    $name = $_FILES['file']['name'];
    $target_dir = "videos/";
    $target_file = $target_dir.$name;
// file extension
    $extension = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
//  valid file extensions
    $extension_arr = array("mp4", "avi", "3gp", "mov", "mpeg");
//   check extension
    if (in_array($extension, $extension_arr)){
//   check file size
        if ($_FILES['file']['size'] >=$maxsize){
            $_SESSION['message'] = "File too large. file must be less than 100MB";
        } else{
//   upload
            if (move_uploaded_file($_FILES['file']['tmp_name'],$target_file)){
// name kan fout zijn!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                $stmt = Connection::make($config['database'])->prepare("INSERT INTO videos(video_name,video_location) VALUES('".$name."','".$target_file."')");
                $stmt->execute();
                $_SESSION['message'] = "Upload successfully";
            }
        }
    } else{
        $_SESSION['message'] = "Invalid file extension.";
    }
}else{
    $_SESSION['message'] = "Please select a file.";
}
if (!isset($_POST['courses_category'])){
    echo "geen categorie geselecteerd";
}
My form:
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cursus Aanmaken</title>
    <?php require 'views/utils/headerLinks.php';
    require 'utils/videoUpload.php';
    ?>
</head>
<body>
<!--Upload response-->
<?php
if (isset($_SESSION['message'])){
    echo $_SESSION['message'];
    unset($_SESSION['message']);
}
?>
<header>
    <?php require 'utils/navbar.php'; ?>
</header>
<main>
    <!--Makes a container and centers the form-->
    <div class="container">
        <!--Makes a cardholder-->
        <div class="card">
            <div class="card-body">
                <form action="uploadCourse" method="post" enctype="multipart/form-data">
                    <div class="mb-3">
                        <label class="form-check-label" for="courses_name">Naam Cursus</label>
                        <input name="courses_name" class="form-control" type="text"
                               placeholder="Typ hier de naam van de cursus"
                               aria-label="default input example" id="courseName">
                    </div>
                    <!--Description text area-->
                    <div class="mb-3">
                        <label for="exampleFormControlTextarea1" class="form-label">Omschrijving</label>
                        <textarea name="courses_description" class="form-control" id="exampleFormControlTextarea1"
                                  rows="3"
                                  placeholder="Typ hier de beschrijving van de cursus"></textarea>
                    </div>
                    <!--Category checkbox area-->
                    <div><label class="categoryCheckboxes">Categorie(ën)</label></div>
                    <div class="btn-group" role="group" aria-label="Basic checkbox toggle button group">
                        <input name="courses_category" type="checkbox" class="btn-check" id="btncheck1" autocomplete="off" value="html">
                        <label class="btn btn-outline-primary" for="btncheck1">Html</label>
                        <input name="courses_category" type="checkbox" class="btn-check" id="btncheck2" autocomplete="off" value="php">
                        <label class="btn btn-outline-primary" for="btncheck2">Php</label>
                        <input name="courses_category" type="checkbox" class="btn-check" id="btncheck3" autocomplete="off" value="css">
                        <label class="btn btn-outline-primary" for="btncheck3">CSS</label>
                        <input name="courses_category" type="checkbox" class="btn-check" id="btncheck4" autocomplete="off" value="java">
                        <label class="btn btn-outline-primary" for="btncheck4">Java</label>
                    </div>
                    <!--Single file input for course thumbnail-->
                    <div class="mb-3">
                        <br>
                        <label for="formFile" class="form-label">Thumbnail cursus</label>
                        <input name="thumbnailCourse" class="form-control" type="file" id="formFile">
                    </div>
                    <!--Single file input for video-->
                    <div class="mb-3">
                        <br>
                        <label for="formFile" class="form-label">Video cursus</label>
                        <input name="file" class="form-control" type="file" id="formFile">
                    </div>
                    <!--                    Multiple files input for videos-->
                    <!--                    <div class="mb-3">-->
                    <!--                        <label for="formFileMultiple" class="form-label">Video's uploaden</label>-->
                    <!--                        <input class="form-control" type="file" id="formFileMultiple" multiple>-->
                    <!--                    </div>-->
                    <!---->
                    <!--                    Submit button-->
                    <button name="submit" type="submit" class="btn btn-primary" value="upload">Aanmaken</button>
                </form>
            </div>
        </div>
    </div>
</main>
<footer>
    <?php require 'utils/footer.php'; ?>
</footer>
</body>
</html>
 
    