<form method="post" action="formProcessing.php">
  <input type="text" name="uses[]">
  <input type="text" name="uses[]">
  <input type="text" name="uses[]">
</form>

У меня есть две таблицы базы данных, одна называется информация, другие использует. информационная таблица содержит имя столбца inf_num . Есть ли способ, где я могу получить последнюю строку inf_num и вставить вышеуказанные входные данные в использования в одном запросе. Например, если бы я делал это вручную, я бы сам проверил последнюю строку, поэтому, если она 10 , я бы сделал следующее:

INSERT INTO uses (id, uses) VALUES (10, 'useZero'), (10, 'useOne'), (10, 'useTwo');


Как мне сделать это динамически с php, используя форму выше:

-1
Hamza Shakil 3 Мар 2018 в 08:57

4 ответа

Лучший ответ

Попробуй сделать такой запрос

<?php

//Your input is array of your input.
$yourInput = array(10,20,26);

$query = "INSERT INTO uses (id, uses) VALUES ";

foreach($yourInput as $value ){
 $query .= "(10, '$value')".",";
}

echo $query;
//Output
INSERT INTO uses (id, uses) VALUES (10, '10'),(10, '20'),(10, '26')

Протестировано здесь . Чем выполнить этот запрос

Но помните, что код не является безопасным. можно выполнить SQL-инъекцию, поэтому, пожалуйста, прочитайте эту заметку . и сделайте его более безопасным.

-1
TarangP 3 Мар 2018 в 06:55

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

CREATE TRIGGER uses_before_insert_trigger BEFORE INSERT ON `uses` FOR EACH ROW
      BEGIN                            
           SET NEW.id = (select id from info order by id desc LIMIT 1);    
      END

После создания триггера вы можете выполнить запрос вставки напрямую.

INSERT INTO uses (uses) VALUES ('10'),('20'),('26');
0
Mayank Majithya 3 Мар 2018 в 06:26

INSERT INTO user (id, использует) SELECT MAX (id), 'userOne' ИЗ ИНФОРМАЦИИ UNION ALL SELECT MAX (id), 'userTwo' FROM info;

0
karunakaran c 3 Мар 2018 в 07:28

Мы можем сделать это также с помощью запроса.

INSERT INTO uses( id, uses ) VALUES ((SELECT MAX(inf_num) from info), 
'useOne', (SELECT MAX(inf_num) from info), 'useTwo', (SELECT MAX(inf_num) from 
info), 'useThree')
-1
karunakaran c 3 Мар 2018 в 06:28