Как будет выглядеть следующий запрос - MySQL
Формулировка задачи:
Помогите плз, очень нужна помощь.
Таблица 1 НАИМЕНОВАНИЯ:
id name
1 знач1
2 знач2
Таблица 2 КАТЕГОРИИ:
id cat
1 кат1
2 кат2
Таблица 3 КАТ-НАИМ:
id idname idcat
1 idзнач1 idкат2
2 idзнач2 idкат1
Когда я добавляю новую строку (внимание таблицы еще пусты кроме КАТЕГОРИИ) для таблицы НАИМЕНОВАНИЯ и выбираю категорию (заполнены), мне нужен такой запрос который бы добавлял строку в таблицу НАИМЕНОВАНИЯ а таблица КАТ-НАИМ заполнялась соответствующим образом, айди добавленного товара соотвествовал айди категории и все это будет хранится в третьей таблице. Как я читал остальные варианты более геморные, т.к. предполагается, что 1 товар может относится к нескольким категориям
Решение задачи: «Как будет выглядеть следующий запрос»
textual
Листинг программы
$query = "INSERT INTO `НАИМЕНОВАНИЯ ` (`name`) VALUES ('знач1')";
mysqli_query($dbc, $query)
or die('error');
$query = "SELECT LAST_INSERT_ID()"; // последний вставленный ID автоинкрементом, за текущую сессию
$data = mysqli_query($dbc, $query)
or die('error');
$row = mysqli_fetch_array($data);
$id = $row['LAST_INSERT_ID()'];
$query = "INSERT INTO `КАТ-НАИМ` (`idзнач1`,`idкат2`) VALUES ('$id', 'idкат2')"; // id выбранной категории вы по идее знаете у себя в коде, если нет - нужно сделать дополнительно запрос, перед этим
mysqli_query($dbc, $query)
or die('error');
Объяснение кода листинга программы
- Создается переменная
$queryс запросом на вставку данных в таблицуНАИМЕНОВАНИЯ - Запрос на вставку данных в таблицу
КАТ-НАИМс использованием значения$idиз предыдущего запроса - Выполнение запроса с помощью функции
mysqli_queryс подключением$dbc - Проверка успешности выполнения запроса с помощью оператора
or die - Выполнение запроса на получение последнего вставленного ID с помощью функции
LAST_INSERT_ID - Получение результата запроса в виде массива с помощью функции
mysqli_fetch_array - Сохранение значения
LAST_INSERT_IDв переменную$id - Выполнение запроса на вставку данных в таблицу
КАТ-НАИМс использованием значений$idиidкат2 - Проверка успешности выполнения запроса с помощью оператора
or die