Skip to content
Advertisement

Trying to upload files to a folder and to the database

I am trying to upload files to a given folder and to the database using PHP. Files are uploading to the folder successfully but don’t update the database. I can’t find the issue of that. Please help me to solve the problem.

<?php

$host = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "abc_school";

//Create connection
$conn = mysqli_connect($host, $dbUsername, $dbPassword, $dbName);

// Uploads files
$targetDir = "uploads/";

$lessonNo = $_POST['lno'];
$lessonName = $_POST['lname'];
$description = $_POST['ldescription'];
$date = $_POST['ldate'];
$fileName = $_FILES['lfile']['name'];
$targetFilePath = $targetDir . $fileName;
$fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);

if(isset($_POST["upload"]) && !empty($_FILES['lfile']['name'])){
    // Allow certain file formats
    $allowTypes = array('jpg','png','jpeg','gif','pdf');
    if(in_array($fileType, $allowTypes)){
        // Upload file to server
        if(move_uploaded_file($_FILES['lfile']['tmp_name'], $targetFilePath)){
            // Insert image file name into database
            $insert = "INSERT INTO lessons (lesson_no, name, description, date, file) VALUES ($lessonNo, '$lessonName', 
                '$description', '$date', '$fileName');";
            $result_insert = mysqli_query($conn,$insert);
            
            if($insert){
                $statusMsg = "The file ".basename($_FILES['lfile']['name']). " has been uploaded successfully.";
            }
            else{
                $statusMsg = "File upload failed, please try again.";
            } 
        }
        else{
            $statusMsg = "Sorry, there was an error uploading your file.";
        }
    }
    else{
        $statusMsg = "Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.";
    }
}
else{
    $statusMsg = "Please select a file to upload.";
}

echo $statusMsg;

?>

This is a screenshot of the table that I am trying to update.

screenshot

Advertisement

Answer

Are there no errors displayed?

Have you tried to display the contents of the $insert variable with a var_dump then copy / paste the SQL query into your mysql executor (ex: phpmyadmin)?

I think you want to test the $result_insert and not the $insert in this part:

        if($insert){
            $statusMsg = "The file ".basename($_FILES['lfile']['name']). " has been uploaded successfully.";
        }
        else{
            $statusMsg = "File upload failed, please try again.";
        } 
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement