ALEX8998 Ответов: 3

Обратите внимание: неопределенный индекс: product_image in C:\xampp\htdocs\ecommerce\admin_area\insert_product.php на линии 110


Существует проблема с вставкой product_image в базу данных. Я много пробовал, но так и не смог понять, в чем проблема

Что я уже пробовал:

<!DOCTYPE html>
<?php
include("includes/db.php");
?>

<html>
<head>
  <script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
  <script>tinymce.init({ selector:'textarea' });</script>

	<title>Inserting new product</title>

</head>
<body bgcolor="orange">
<form action="insert_product.php" method="post" enctype="multipart/form.data">
<table align="center" width="700" border="2" bgcolor="white">

<tr align="center">
	<td colspan="7"><h2 align="center">Insert new product here</h2></td>
</tr>

<tr>
	<td align="right">Product title:</td>
	<td><input type="text" name="product_title" size="60" /></td>

</tr>
<tr>
	<td align="right">Product Category:</td>
	<td><select name="product_cat">
		<option>Select a category</option>

		<?php

	$get_cats = "select * from categories";
	$run_cats= mysqli_query($con,$get_cats);

	while ($row_cats=mysqli_fetch_array($run_cats)) {

		$cat_id = $row_cats['cat_id'];
		$cat_title = $row_cats['cat_title'];
		echo "<option value='$cat_id'>$cat_title</option>";
	}
	?>
	</select>
	</td>

</tr>
<tr>
	<td align="right">Product Brand:</td>
	<td><select name="product_brand">
<option>Select a Brand</option>
<?php

    $get_brands = "select * from brands";
	$run_brands= mysqli_query($con,$get_brands);

	 while ($row_brands=mysqli_fetch_array($run_brands)) {

	  $brand_id = $row_brands['brand_id'];
	  $brand_title = $row_brands['brand_title'];
	  echo "<option value='$brand_id'>$brand_title</option>";
	}
?>
</select>


	</td>

</tr>
<tr>
	<td align="right">Product image:</td>
	<td><input type="file" name="product_image"/></td>

</tr>
<tr>
	<td align="right">Product price:</td>
	<td><input type="text" name="product_price"/></td>

</tr>
<tr>
	<td align="right">Product Description:</td>
	<td><textarea name="product_desc" cols="20" rows="10"></textarea></td>

</tr>
<tr>
	<td align="right">Product Keywords:</td>
	<td><input type="text" name="product_keywords" size="50" /></td>

</tr>
<tr align="center">
		<td colspan="7"><input type="Submit" name="insert_post" value="Insert now" /></td>

</tr>
</table>

</body>
</html>

<?php
if(isset($_POST['insert_post'])){

//getting the text data from the fields
$product_title = $_POST['product_title'];
$product_cat = $_POST['product_cat'];
$product_brand = $_POST['product_brand'];
$product_price = $_POST['product_price'];
$product_desc = $_POST['product_desc'];
$product_keywords = $_POST['product_keywords'];
 // getting the image from the fields
$product_image=$_FILES['product_image']['name'];
$product_image_tmp=$_FILES['product_image']['tmp_name'];

echo $insert_product = "INSERT INTO products(product_cat,product_brand,product_title,product_price,product_desc,product_image,product_keywords) values('$product_cat','$product_brand','$product_title','$product_price','$product_desc','$product_image','product_keywords')";

}

Richard MacCutchan

Что такое строка 110 и каково значение объектов массива, на которые ссылаются? Не только пропавшие без вести $ войдите в систему вашего использования 'product_keywords' в вашем списке ценностей.

ALEX8998

110 - это строка $product_image

Richard MacCutchan

Сообщение об ошибке говорит вам, что значение индекса 'product_image' недопустимый. Поэтому используйте свой отладчик, чтобы выяснить, почему.

3 Ответов

Рейтинг:
2

Patrice T

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]


Рейтинг:
2

Member 13988145

Я думаю, что это не так enctype="multipart/form.data"

это enctype="multipart/form-data"


Рейтинг:
12

Kornfeld Eliyahu Peter

Ошибка ясна, индекс 'product_image' не существует в массиве $_FILES...
Почему? Имя не существует в вашем HTML? Вы на самом деле не загрузили ни одного файла?
Фактический ответ находится в ваших руках - используйте отладчик, чтобы найти его...