将图像路径存储到 MySQL 中时出现问题


Trouble storing image path into MySQL

我在理解将图像文件路径存储到 MySQL 数据库中时遇到麻烦。但它存储图像详细信息以及将图像文件移动到目录中。我尝试了很多方法,但没有运气。我是PHP新手。

问题: 如何正确捕获图像的路径并将其存储到 MySQL 中?

参考链接: http://www.php-mysql-tutorial.com/wikis/php-tutorial/uploading-files-to-the-server-using-php.aspx

另外: 请提出任何更好的编码实践以供考虑。非常感谢!

//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;

这是我的错误消息。

注意:未定义的变量:/useradmin-processor.php 第 45 行的路径

注意:未定义的索引:/useradmin-processor.php 第 55 行中的 ipath

注意:未定义的变量:/useradmin-processor.php 第 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);
}

这有效。

我添加了它,现在一切都有效。我还更改了连接到数据库的方式。我相信它可以做得更好,因为我现在在代码中挂着它。$params = 数组();

// 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);
}