Я пытаюсь сохранить изображения в моей базе данных из формы HTML. Я написал PHP-код для выполнения этой задачи. Программа не генерирует никакого сообщения об ошибке, но также не вставляет данные изображения в базу данных MySQL. Просьба проверить это. Здесь я делюсь выдержкой из моего кода.
/*------------------- IMAGE QUERY ---------------*/ $file =$_FILES['image']['tmp_name']; if(!isset($file)) { echo 'Please select an Image'; } else { $image_check = getimagesize($_FILES['image']['tmp_name']); if($image_check==false) { echo 'Not a Valid Image'; } else { $image = file_get_contents ($_FILES['image']['tmp_name']); $image_name = $_FILES['image']['name']; if ($image_query = mysql_query ("insert into product_images values (1,'$image_name',$image )")) { echo $current_id; //echo 'Successfull'; } else { echo mysql_error(); } } } /*----------------- IMAGE QUERY END ---------------------*/ <form action='insert_product.php' method='POST' enctype='multipart/form-data' ></br> File : <input type='file' name= 'image' > </form>
Сообщение об ошибке У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 1
- Twitter oAuth показывает недопустимый или истекший токен
- Не удалось получить доступ к моему файлу Google. Файлы с учетной записью службы.
- Подключиться к БД с классом PHP не работает, когда пытаешься получить результаты
- session_id () не получает переменные сеанса
- Как получить данные из базы данных и отобразить их на PHP?
Во-первых, вы должны проверить, является ли ваш столбец изображения типом BLOB !
Я ничего не знаю о вашей таблице SQL, но если я попытаюсь сделать свой собственный пример.
Мы получили поля id
(int), image
(blob) и image_name
(varchar (64)).
Поэтому код должен выглядеть так (предположим, что идентификатор всегда «1», и давайте использовать этот mysql_query):
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence! $image_name = addslashes($_FILES['image']['name']); $sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')"; if (!mysql_query($sql)) { // Error handling echo "Something went wrong! :("; }
Вы делаете это неправильно во многих отношениях. Не используйте функции mysql – они устарели! Используйте PDO или MySQLi . Вы также должны подумать о сохранении местоположений файлов на диске. Использование MySQL для хранения изображений считается Bad Idea ™. Обработка таблицы SQL с большими данными, например изображениями, может быть проблематичным.
Также ваша форма HTML не соответствует стандартам. Он должен выглядеть так:
<form action="insert_product.php" method="POST" enctype="multipart/form-data"> <label>File: </label><input type="file" name="image" /> <input type="submit" /> </form>
Примечание:
При работе с файлами и их хранении в виде BLOB данные должны быть экранированы с помощью mysql_real_escape_string()
, в противном случае это приведет к синтаксической ошибке.
Еще несколько деталей :
`image` blob
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$sql = "INSERT INTO `product_images` (`id`, `image`) VALUES ('1', '{$image}')";
<img src="data:image/png;base64,'.base64_encode($row['image']).'">
Как вставить в базу данных?
<html> <head> <title>Uploads</title> </head> <body> <input type="file" name="file_array[]"/> <input type="file" name="file_array[]"/> <input type="file" name="file_array[]"/> <input type="submit" name="submit"/> </body> </html> <?php if(isset($_FILES['file_array'])) { $name_array = $_FILES['file_array']['name']; $tmp_name_array = $_FILES['file_array']['tmp_name']; $type_array = $_FILES['file_array']['type']; $size_array = $_FILES['file_array']['size']; $error_array = $_FILES['file_array']['error']; $dir = "slideshow"; for($i = 0; $i<count($tmp_name_array); $i++) { if(move_uploaded_file($tmp_name_array,"slideshow/".$name_array)) { echo $name_array[$i]."Upload is complete<br>"; } else { echo"Move_uploaded_file function failed for".$name_array[$i]."<br>"; } } } ?>
-<html> <head> <title>Uploads</title> </head> <body> <input type="file" name="file_array[]"/> <input type="file" name="file_array[]"/> <input type="file" name="file_array[]"/> <input type="submit" name="submit"/> </body> </html> <?php if(isset($_FILES['file_array'])) { $name_array = $_FILES['file_array']['name']; $tmp_name_array = $_FILES['file_array']['tmp_name']; $type_array = $_FILES['file_array']['type']; $size_array = $_FILES['file_array']['size']; $error_array = $_FILES['file_array']['error']; $dir = "slideshow"; for($i = 0; $i<count($tmp_name_array); $i++) { if(move_uploaded_file($tmp_name_array,"slideshow/".$name_array)) { echo $name_array[$i]."Upload is complete<br>"; } else { echo"Move_uploaded_file function failed for".$name_array[$i]."<br>"; } } } ?>