Как объединить запись в базу?

Здравствуйте! Как сделать, чтобы по нажатию кнопки OK , в базу записывался name, description и картинка? Сейчас текстовые поля записываются отдельно от картинки. Как их объединить?
<form action="admin" method="post" enctype="multipart/form-data">

<input type="text" name="name">
<input type="text" name="description"> 
<input type="submit" value="OK">

<p>Загрузить картику</p>
<input type="file" name="img_upload"><input type="submit" name="upload" value="Загрузить">


<?php
  if (isset($_POST["name"])) {
    $sql = mysqli_query($connection, "INSERT INTO `catalog` (`name`, `description`) VALUES ('{$_POST['name']}', '{$_POST['description']}')");
    if ($sql) {
      echo '<p>Данные успешно добавлены в таблицу.</p>';
    } else {
      echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
    }
  }
if(isset($_POST['upload'])){
	$img_type = substr($_FILES['img_upload']['type'], 0, 5);
	$img_size = 2*1024*1024;
	if(!empty($_FILES['img_upload']['tmp_name']) and $img_type === 'image' and $_FILES['img_upload']['size'] <= $img_size){ 
	$img = addslashes(file_get_contents($_FILES['img_upload']['tmp_name']));
	$connection->query("INSERT INTO catalog (img) VALUES ('$img')");
	}
}
?>
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Во первых - есть веская причина хранить картинки в бд? В целом затея весьма странная, корме того сильно влияет на производительность и потребление оперативки, про прочие минусы я вообще молчу...

Во вторых - даже если такая беда приключилась - что мешает проверять наличие файлов в разделе добавления текстовых полей, перед инсертом?

Ну и в третьих - какие-то проверки неплохо бы сделать перед вставкой, if (isset($_POST["name"])) это вообще смешно, я туда могу пробел вставить, или просто прислать пустое значение, как и в описание кстати... про сплошные дыры через инжекции вообще молчу, никаких проверок, про подготовленные выражения тоже никто никогда не слышал...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы