@timmy_turn3r
Хочу стать разработчиком веб-приложений

Как исправить ошибку при добавлении строки phpmyadmin?

У меня появляется ошибка в phpmyadmin при добавлении новой строки в таблицу.
Дословно звучит так:
NSERT INTO players (newid, player_id, Imya, number, info, image, category_id) VALUES (NULL, '25', 'uipoujo', '12', 'k;k;lk', 'popojpj', '6')

Ответ MySQL: Документация #1452 - Cannot add or update a child row: a foreign key constraint fails (test.players, CONSTRAINT players_ibfk_1 FOREIGN KEY (category_id) REFERENCES categories (id))
5f4b48386b729371147746.png
Так выглядит запрос
$players =($GLOBALS['db']->query("SELECT * FROM `players` INNER JOIN `categories` ON `categories`.`id` = `players`.`category_id` ORDER BY `players`.`category_id`"));
    return $players;

Так выглядит бд
-- phpMyAdmin SQL Dump
-- version 5.0.2
-- https://www.phpmyadmin.net/
--
-- Хост: 127.0.0.1:3306
-- Время создания: Авг 27 2020 г., 14:36
-- Версия сервера: 10.3.22-MariaDB
-- Версия PHP: 7.1.33

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- База данных: `test`
--

-- --------------------------------------------------------

--
-- Структура таблицы `categories`
--

CREATE TABLE `categories` (
  `id` int(255) NOT NULL,
  `name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `categories`
--

INSERT INTO `categories` (`id`, `name`) VALUES
(1, 'VAn'),
(3, 'dada'),
(4, 'Мелкиий'),
(6, 'simple');

-- --------------------------------------------------------

--
-- Структура таблицы `players`
--

CREATE TABLE `players` (
  `newid` int(10) UNSIGNED NOT NULL,
  `player_id` int(255) NOT NULL,
  `name` tinytext NOT NULL,
  `number` int(255) NOT NULL,
  `info` text NOT NULL,
  `image` tinytext NOT NULL,
  `category_id` int(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `players`
--

INSERT INTO `players` (`newid`, `player_id`, `name`, `number`, `info`, `image`, `category_id`) VALUES
(4, 231, 'sadsda', 10, 'вмп', '', 3),
(5, 222, 'Billy Herrington', 69, 'цукцукцукцукцукуц', 'https://pinger.kz/storage/avatars/escjxndwkaiklc1-5e941b93e1591.jpeg', 1);

-- --------------------------------------------------------


--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `categories`
--
ALTER TABLE `categories`
  ADD PRIMARY KEY (`id`);

--
-- Индексы таблицы `players`
--
ALTER TABLE `players`
  ADD PRIMARY KEY (`newid`);


--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `categories`
--
ALTER TABLE `categories`
  MODIFY `id` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT для таблицы `players`
--
ALTER TABLE `players`
  MODIFY `newid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
--
-- Ограничения внешнего ключа сохраненных таблиц
--

--
-- Ограничения внешнего ключа таблицы `players`
--
ALTER TABLE `players`
  ADD CONSTRAINT `players_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Помогите пожалуйста. Это первый серьезный проект.
  • Вопрос задан
  • 300 просмотров
Решения вопроса 1
@alexalexes
Ограничения по внешним ключам прямо говорят о том, чтобы по идентификаторам player_id и категории в справочниках players и categories существовали нужные записи, но и сами идентификаторы были того же типа данных, что и первичные ключи справочников.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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