Перейти к содержимому



Ошибка при вставке данных в БД Column 'day31' specified twice

#1 Kuchuluk

Kuchuluk
  • Пользователь
  • 329 сообщений
  • Репутация: 5
0

Отправлено 12 Июль 2018 - 14:16

Здравствуйте. Есть огромная таблица, которая генерируется на сайте. Сделал таблицу в БД MySQL для ее сохранения.

 

 

Формирую запрос к БД в цикле, так как много идентичных полей day1 day2 day3 day4 и т.д.

$sql = "INSERT INTO `" . $_SESSION['graphName'] . "` SET ";
		$counter = 0;
		foreach ($getData as $key => $value) {
			$counter++;
			$i = explode("-", $key);
			$a .= $i[2];
			if ($i[0] == 1 AND $i[2] == 1) {
				$sql .= "`unitId` = '" . $i[1] . "', `workerId` = '" . $i[0] . "', `month` = '" . $i[3] . "', `year` = '" . $year . "', `day" . $i[2] . "` = '{$value}', ";
			} elseif ($counter == $arrayLength) {
				$sql .= "`day" . $i[2] . "` = '{$value}'";
			} else {
				$sql .= "`day" . $i[2] . "` = '{$value}', ";
			}
		}
		$query = mysqli_query($db, $sql) or die(mysqli_error($db));
		if ($query == false) $res = "че то не получилось";
		else $res = "график успешно обновлен";

Запрос по идее формируется правильный: INSERT INTO `cocl_graph` SET `unitId` = '1', `workerId` = '1', `month` = '7', `year` = '2018', `day1` = 'В', `day2` = '9/18', `day3` = '9/18', `day4` = '9/18', `day5` = '9/18', `day6` = '9/18', `day7` = 'В', `day8` = '\u0412', `day9` = '9/18', `day10` = '9/18', `day11` = '9/18', `day12` = '9/18', `day13` = '9/18', `day14` = '\u0412', `day15` = '\u0412', `day16` = '9/18', `day17` = '9/18', `day18` = '9/18', `day19` = '9/18', `day20` = '9/18', `day21` = '\u0412', `day22` = '\u0412', `day23` = '9/18', `day24` = '9/18', `day25` = '9/18', `day26` = '9/18', `day27` = '9/18', `day28` = '\u0412', `day29` = '\u0412', `day30` = '9/18', `day31` = '9\/18', `unitId` = '1', `workerId` = '2', `month` = '7', `year` = '2018', `day1` = '\u0412', `day2` = '9/18', `day3` = '9/18', `day4` = '9/18', `day5` = '9/18', `day6` = '9/18', `day7` = '\u0412', `day8` = '\u0412', `day9` = '9/18', `day10` = '9/18', `day11` = '9/18', `day12` = '9/18', `day13` = '9/18', `day14` = '\u0412', `day15` = '\u0412', `day16` = '9/18', `day17` = '9/18', `day18` = '9/18', `day19` = '9/18', `day20` = '9/18', `day21` = '\u0412', `day22` = '\u0412', `day23` = '9/18', `day24` = '9/18', `day25` = '9/18', `day26` = '9/18', `day27` = '9/18', `day28` = '\u0412', `day29` = '\u0412', `day30` = '9/18', `day31` = '9/18'

 

Но при попытке сохранить выдает ошибку Column 'day31' specified twice


 

 

Сообщение отредактировал Kuchuluk: 12 Июль 2018 - 14:17

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Вопрос по MyAdmin (наверное)
  2. Не запускается PHPMyAdmin
  3. Ошибка в WP при переносе с одного сервера БД и http на другой
  4. Ошибки после установки шаблона
  5. Яндекс Вордстат. Статистика запросов.

#2 fedornabilkin

fedornabilkin
  • Модератор
  • 1 114 сообщений
  • Репутация: 180

Отправлено 12 Июль 2018 - 16:56

Колонка day31 указана дважды, поэтому запрос не может быть выполнен.

Похоже плохо спроектировал структуру БД. Не знаю, что там у тебя надо сделать, но я бы вряд ли стал делать таблицу с таким количеством полей.


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.




Оформление форума – IPBSkins.ru