我很难理解将图像 文件路径 存储到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;
以下是我的错误消息。
注意:未定义的变量:第45行的/useradmin-processor.php中的路径
注意:未定义的索引:第55行的/useradmin-processor.php中的ipath
注意:未定义的变量:第59行的/useradmin-processor.php中的路径
// 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);
}
答案 0 :(得分:1)
这很有效。
我补充说,现在一切正常。我也改变了我连接数据库的方式。我确信它可以做得更好,因为我现在已经把它挂在代码中了。 $ 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);
}