La imagen de PHP no se actualiza en la base de datos

La imagen de PHP no se actualiza en la base de datos

Quiero actualizar mi imagen en mi base de datos. Pero cuando lo actualizo en mi formulario, el valor de mi base de datos queda vacío para la imagen.

Aquí está el script PHP que estoy usando para actualizar la imagen y otros valores. Es bueno notar que solo el valor de mi imagen se va a vaciar, el resto de los valores en mi base de datos se están actualizando.

<?php 
    if(isset($_POST["submit"]) && isset($_GET['id']) && $_GET['id'] == "type") {

    include('config.php');

    $imgFile = $_FILES['user_image']['name'];
    $tmp_dir = $_FILES['user_image']['tmp_name'];
    $imgSize = $_FILES['user_image']['size'];

    if($imgFile)
    {
        $upload_dir = 'user_images/'; // upload directory   
        $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension
        $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions
        $userpic = rand(1000,1000000).".".$imgExt;
        if(in_array($imgExt, $valid_extensions))
        {           
            if($imgSize < 5000000)
            {
                unlink($upload_dir.$edit_row['opzoekImage']);
                move_uploaded_file($tmp_dir,$upload_dir.$userpic);
            }
            else
            {
                $errMSG = "Sorry, your file is too large it should be less then 5MB";
            }
        }
        else
        {
            $errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";        
        }   
    }
    else
    {
        // if no image selected the old image remain as it is.
        $userpic = $edit_row['opzoekImage']; // old image from database
    }

    $sql2 = "UPDATE tblOpzoek SET opzoekName='".$_POST["typenaam"]."', opzoekValue='".$_POST["typewaarde"]."', opzoekImage='".$userpic."' WHERE opzoekId=".$_POST["typeid"]."";

    if($db->query($sql2) === TRUE) {
        header('Location: ' . $_SERVER['HTTP_REFERER']);
        } else {
        echo "<script type= 'text/javascript'>alert('Error: " . $sql2 . "<br>" . $db->error."');</script>";
        }
    }
?>

Y aquí está el código config.php:

<?php
   define('DB_SERVER', 'localhost');
   define('DB_USERNAME', 'root');
   define('DB_PASSWORD', 'root');
   define('DB_DATABASE', 'offerteBVDO');
   $db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
?>

Actualización:

La consulta SQL ahora genera esto: UPDATE tblOpzoek SET opzoekName='Greenline Veranda', opzoekValue='greenline_veranda', opzoekImage='12443.jpg' WHERE opzoekId='1'

Pero en la base de datos la imagen no tiene el valor como en el enunciado anterior.

Cuando inserto la consulta SQL en mi phpmyadmin, funciona, ¿por qué no funciona en mi PHP?

Mostrar la mejor respuesta

ver la longitud de columna del campo en la tabla.

@SureshKamrushi el campo opzoekImage es varchar(255)

Compruebe si $userpic está vacío antes de realizar una actualización. Si está vacío, no incluya el campo de imagen en la cadena sql; de lo contrario, inclúyalo.

imprima la consulta "echo $sql2" y ejecute la consulta directamente en mysql y vea los errores

@SureshKamrushi imprime un "opzoekImage=''" vacío

Como $editar_fila['opzoekImage']; puede estar vacío todo el tiempo.

No veo código que SETS $edit_row['opzoekImage']

@RiggsFolly, ¿cómo puedo configurarlo? y ponerlo con que?

Su consulta de actualización parece un error, actualice con esta.

$sql2 = "UPDATE tblOpzoek SET opzoekName='".$_POST["typenaam"]."', 
                opzoekValue='".$_POST["typewaarde"]."', 
                opzoekImage='".$userpic."' 
        WHERE opzoekId='".$_POST["typeid"]."'";

todavía pone opzoekImage con un valor vacío

luego debe verificar su formulario html, agregar el atributo de formulario enctype="multipart/form-data"; de lo contrario, la imagen no se cargará