How To Update An Image In Mysql

16,021

Solution 1

I think you miss the

enctype="multipart/form-data"

to work with files.

http://www.w3schools.com/php/php_file_upload.asp

Solution 2

The unlink function might just be what you wanted

if (file_exists($PATH_TO_IMAGE))
{
       unlink($PATH_TO_IMAGE);            
}
Share:
16,021
user1084949
Author by

user1084949

Updated on June 07, 2022

Comments

  • user1084949
    user1084949 almost 2 years

    I have a php page that upload image to a folder and the name is inserted in mysql table . Now I want to create a page that will update the picture and delete the old picture in the directory folder or replace the old with the new picture.

    Here is the code which is not updating not the image or the other fields.

     <?php
    // Start a session for error reporting
    session_start();
    
    // Call our connection file
    require("includes/conn.php");
    
    
    
    // Set some constants
    
    // This variable is the path to the image folder where all the images are going to be stored
    // Note that there is a trailing forward slash
    $TARGET_PATH = "images/";
    
    // Get our POSTed variables
    $name = $_POST['name'];
    $description  = $_POST['description '];
    $price = $_POST['price'];
    $image = $_FILES['image'];
    $serial = $_POST['serial'];
    
    // Sanitize our inputs
    $name = mysql_real_escape_string($name);
    $description = mysql_real_escape_string($description);
    $price = mysql_real_escape_string($price);
    $image['name'] = mysql_real_escape_string($image['name']);
    
    // Build our target path full string.  This is where the file will be moved do
    // i.e.  images/picture.jpg
    $TARGET_PATH .= $image['name'];
    
    
    // Here we check to see if a file with that name already exists
    // You could get past filename problems by appending a timestamp to the filename and then continuing
    if (file_exists($TARGET_PATH))
    {
            $_SESSION['error'] = "A file with that name already exists";
            header("Location: updateproduct.php");
            exit;
    }
    
    // Lets attempt to move the file from its temporary directory to its new home
    if (move_uploaded_file($image['tmp_name'], $TARGET_PATH))
    {
            // NOTE: This is where a lot of people make mistakes.
            // We are *not* putting the image into the database; we are putting a reference to the file's location on the server
            $sql = "UPDATE products SET picture = '$image', description = '$description' ,price = '$price' ,name = '$name'  WHERE serial = '$serial'";
    
    
     $result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
            header("Location: updateproduct.php");
            exit; 
    
    }
    else
    {
            // A common cause of file moving failures is because of bad permissions on the directory attempting to be written to
            // Make sure you chmod the directory to be writeable
            $_SESSION['error'] = "Could not upload file.  Check read/write persmissions on the directory";
            header("Location: updateproduct.php");
            exit;
    }
    ?>
    

    here is the form

       <?php require_once('Connections/shopping.php'); ?>
    <?php
    $colname_Recordset1 = "1";
    if (isset($_POST['serial'])) {
      $colname_Recordset1 = (get_magic_quotes_gpc()) ? $_POST['serial'] : addslashes($_POST['serial']);
    }
    mysql_select_db($database_shopping, $shopping);
    $query_Recordset1 = sprintf("SELECT * FROM products WHERE serial = %s", $colname_Recordset1);
    $Recordset1 = mysql_query($query_Recordset1, $shopping) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body>
    
    <div align="center">
      <form method="post" name="form1" action="updateupload.php">
        <table align="center">
          <tr valign="baseline">
            <td nowrap align="right">Serial:</td>
            <td><?php echo $row_Recordset1['serial']; ?></td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Name:</td>
            <td><input type="text" name="name" value="<?php echo $row_Recordset1['name']; ?>" size="32"></td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Description:</td>
            <td><input type="text" name="description" value="<?php echo $row_Recordset1['description']; ?>" size="32"></td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Price:</td>
            <td><input type="text" name="price" value="<?php echo $row_Recordset1['price']; ?>" size="32"></td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Picture:</td>
            <td><input type="file" name="picture" value="<?php echo $row_Recordset1['picture']; ?>" size="32"></td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">&nbsp;</td>
            <td><input name="submit" type="submit" value="Update record"></td>
          </tr>
        </table>
      </form>
    </div>
    </body>
    </html>
    <?php
    mysql_free_result($Recordset1);
    ?>