У меня проблемы с пониманием хранения изображений Путь файла в базу данных 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
Примечание: неопределенный индекс: ipath в /useradmin-processor.php в строке 55
Примечание: неопределенная переменная: путь в /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 = 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);
}
Других решений пока нет …