user4324916
user4324916

Reputation:

Trouble storing image path into MySQL

I'm having troubles understanding the storing of images file path into MySQL database. But it is storing the images details as well as moving the image file into directory. I've tried many approaches but no luck. I'm a PHP novice.

Question: How do I properly capture and store the path to the image into MySQL?

Reference Link: http://www.php-mysql-tutorial.com/wikis/php-tutorial/uploading-files-to-the-server-using-php.aspx

Also: Please suggest any better coding practices overall for consideration. Much appreciated!

//MYSQL TABLE
CREATE TABLE `userimages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL DEFAULT '',
  `type` varchar(30) NOT NULL DEFAULT '',
  `size` int(11) NOT NULL,
  `ipath` varchar(250) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

Here are my error messages.

Notice: Undefined variable: path in /useradmin-processor.php on line 45

Notice: Undefined index: ipath in /useradmin-processor.php on line 55

Notice: Undefined variable: path in /useradmin-processor.php on line 59

// IMAGE UPLOAD FILE
if(isset($_POST['imagesupload'])) {
    /*
    Note: The below code will upload the image to the images folder.
    Then store the image name in your database. When you want to show the
    image, just append the image name(taken from database) to the image path
    and paste it in the <img>
    */
    $imageFileName       =   $_FILES["imageFileName"]["name"];
    $tmpImageFileName    =   $_FILES["imageFileName"]["tmp_name"];
    $imageSize           =   $_FILES["imageFileName"]["size"];
    $imageType           =   $_FILES["imageFileName"]["type"];

    move_uploaded_file($tmpImageFileName,"images/".$imageFileName);

    /*
    Note: You can make sure that the images are not overritten by checking
    if there is a different image with the same file name, by using the
    below code prevents overwriting of images due to same Image names.
    You have to store the new Image name in the database.
    */
    $newImageFileName    =   $imageFileName;

    loop1:

    if(!file_exists("images/".$newImageFileName)){
        move_uploaded_file($tmpImageFileName, $path.$newImageFileName);
    } else {
        $newImageFileName .= "_1";
        goto loop1;
    }

    /*
    Note: store the image details into the database and make the connection.
    */
    $params = array(
        ':$path'=>$_POST['ipath']
    );

    $sql = "INSERT INTO userimages ( name, size, type, ipath ) ".
    "VALUES ( '$imageFileName', '$imageSize', '$imageType', '$path' )";

    // the connection to db
    executeSQL($sql, $params);
}

Upvotes: 0

Views: 4194

Answers (1)

user4324916
user4324916

Reputation:

This works.

I added that in and now it all works. I also changed how I'm connecting to the database. I'm sure it could be done better as I now have this hanging on in the code. $params = array();

// IMAGE UPLOAD
$uploadDir = 'images/';

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

    $imageFileName       =   $_FILES["imageFileName"]["name"];
    $tmpImageFileName    =   $_FILES["imageFileName"]["tmp_name"];
    $imageSize           =   $_FILES["imageFileName"]["size"];
    $imageType           =   $_FILES["imageFileName"]["type"];

    //move_uploaded_file($tmpImageFileName,"images/".$imageFileName);

    $filePath = $uploadDir . $imageFileName;

    $result = move_uploaded_file($tmpImageFileName, $filePath);
    if (!$result) {
        echo "Error uploading file";
        exit;
    }

    if(!get_magic_quotes_gpc())
    {
        $imageFileName = addslashes($imageFileName);
        $filePath = addslashes($filePath);
    }

    $newImageFileName    =   $imageFileName;

    loop1:

    if(!file_exists("images/".$newImageFileName)){
        move_uploaded_file($tmpImageFileName, $filePath.$newImageFileName);
    } else {
        $newImageFileName .= "_1";
        goto loop1;
    }

    $params = array();

    $sql = "INSERT INTO userimages ( name, size, type, ipath ) ".
    "VALUES ( '$imageFileName', '$imageSize', '$imageType', '$filePath' )";
    executeSQL($sql, $params);
}

Upvotes: 1

Related Questions