Ошибка при добавлении товаров в бд

196
23 сентября 2018, 17:20

Есть база данных, в ней 2 таблицы (category_sklad состоящая из id и name. products_sklad состоящая из id name kolvo category_id). Для добавления товара во второю таблицу используется форма. При попытке добавить в бд данные из формы происходит ошибка. В форме присутствует тег select который берет данные из таблицы category_sklad.

<!DOCTYPE html> 
<html> 
<head> 
	<title>Админ-панель добавления товара</title> 
	<meta charset="utf-8"> 
</head> 
<body> 
	<?php 
		$host = "localhost"; 
		$user = "root"; 
		$pass = ""; 
		$db_name = "kaat"; 
		$link = mysql_connect($host, $user, $pass); 
		mysql_select_db($db_name, $link); 
	?> 
	<?php 
		//Если переменная Name передана 
		if (isset($_POST["name"])) { 
		    //Вставляем данные, подставляя их в запрос 
		    $sql = mysql_query("INSERT INTO `products_sklad` (`name`, `kolvo`, 'category_id')  
		                        VALUES ('".$_POST['name']."','".$_POST['kolvo']."','".$_POST['category_id']."')"); 
		    //Если вставка прошла успешно 
		    if ($sql) { 
		        echo "<p>Данные успешно добавлены в таблицу.</p>"; 
		    } else { 
		        echo "<p>Произошла ошибка.</p>"; 
		    } 
		} 
	?> 
	<table> 
	<form action="" method="POST"> 
	    <tr> 
	    	<td>Категория:</td> 
	    		<?php 
	    			header('Content-type: text/html; charset=utf8'); 
	    			$sqll = "SELECT * FROM category_sklad"; 
	    			$result_select = mysql_query($sqll); 
	    			echo "<select name='category_id'>"; 
	    			while($object = mysql_fetch_object($result_select)){ 
	    				echo "<option value = '$object->id' > $object->name</option>"; 
	    			} 
	    			echo "</select>"; 
	    		?> 
	    </tr> 
	    <tr> 
	        <td>Наименование:</td> 
	        <td><input type="text" name="name"></td> 
	    </tr> 
	    <tr> 
	        <td>Количество:</td> 
	        <td><input type="text" name="kolvo" size="3"></td> 
	    </tr> 
	    <tr> 
	        <td colspan="2"><input type="submit" value="Добавить"></td> 
	    </tr> 
	</form> 
	</table> 
</body> 
</html>

Answer 1

Возможно ошибка в добавлении появилась из-за непроверенных ошибок на предыдущих строках.

Варианты ошибок:

  1. Расширение mysql в PHP устарело и вместо него используется mysqli или pdo_mysql. Решение: переписать код под одно из приведённых расширении.
  2. неверный логин или пароль. Решение: установить правильные значения.
  3. ошибка выбора дб. Здесь 2 варианта:

    3.1. базы не существует. Решение: создать базу.

    3.2. нет привелегии. Решение: настроить привилегии пользователя.

  4. Наиболее вероятное. Название таблицы и полей не должны быть в одинарных кавычках. Т.е.:

    $sql = mysql_query("INSERT INTO products_sklad (name, kolvo, category_id) VALUES ('{$_POST['name']}', '{$_POST['kolvo']}', '{$_POST['category_id']}')");

будет верно. Решение: поставить кавычки правильно.

  1. Таблицы не существует. Решение: создать таблицу.

А верное решение зависит от ошибки, о которой мы не узнаем, пока вы её не предоставите.

P.p.S. Передавать значения из базы без обработки чревато взломом. Так же желательно закрывать соединение

При неотоброжении русских символов попробуйте поставить запросы перед select_db:

query("SET NAMES 'utf8'");
query("SET CHARACTER SET 'utf8'");
READ ALSO
Брать данные JSON из URL

Брать данные JSON из URL

Есть кусок кода, ну никак не хочет работать, ничего не выводит

162
Как удалить элементы из строки

Как удалить элементы из строки

Есть строка, в ней есть теги вида:

180
Проверка переменной на валидность PHP

Проверка переменной на валидность PHP

Есть динамическая переменная $password в которой храниться генерируемый пароль допустим:

177
Share не работает

Share не работает

Здраствуйте, когда делаю share любую страницу он берет одну и туже информацию из одной страницыНе понимаю в чем проблема, код для share не писал,...

152