Я хочу обновить свой sql с помощью формы отправки, а также вставить, если отправляемые данные не существуют.
Моя SQL база данных похожа на эту
-------------------------------
| id | plan | price | percent |
| 1 | Plan 1 | 1 | 115 |
| 2 | Plan 2 | 2 | 117 |
-------------------------------
Моя форма отправки предоставит этот массив после отправки.
Array
(
[plan] => Array
(
[0] => Plan 1
[1] => Plan 2
[2] => Plan 3
)
[price] => Array
(
[0] => 1.00000000
[1] => 2.00000000
[2] => 5.00000000
)
[percent] => Array
(
[0] => 115.0000
[1] => 117.0000
[2] => 120.0000
)
)
Я хочу обновить mysql базу данных, если идентификатор совпадает с данными, которые я отправляю.
После отправки формы, массив выглядит следующим образом:
Array
(
[plan] => Array
(
[0] => Plan 1
[1] => Plan 2
[2] => Plan 3
)
[price] => Array
(
[0] => 10.00000000
[1] => 20.00000000
[2] => 5.00000000
)
[percent] => Array
(
[0] => 120.0000
[1] => 125.0000
[2] => 130.0000
)
)
Я создал этот PDO
$totalData = sizeof($data['plan']);
for($i=0;$i<$totalData;$i++) {
print_r($data['price'][$i]);
$stmt = $conn->prepare("INSERT INTO plans_sub
(plan, price, percent, main_id)
VALUES (:plan, :price, :percent, :main_id)
ON DUPLICATE KEY UPDATE
plan = :planOne,
price = :priceOne,
percent = :percentOne,
main_id = :main_idOne");
$stmt->bindValue(':plan', isset($data['plan'][$i]) ? $data['plan'][$i] : NULL);
$stmt->bindValue(':price', isset($data['price'][$i]) ? $data['price'][$i] : NULL);
$stmt->bindValue(':percent', isset($data['percent'][$i]) ? $data['percent'][$i] : NULL);
$stmt->bindValue(':main_id', $_POST['id']);
$stmt->bindValue(':planOne', isset($data['plan'][$i]) ? $data['plan'][$i] : NULL);
$stmt->bindValue(':priceOne', isset($data['price'][$i]) ? $data['price'][$i] : NULL);
$stmt->bindValue(':percentOne', isset($data['percent'][$i]) ? $data['percent'][$i] : NULL);
$stmt->bindValue(':main_idOne', $_POST['id']);
$stmt->execute();
}
После отправки формы код всегда дает мне новые данные в базе данных mysql и не обновляет те же данные раньше.
-------------------------------
| id | plan | price | percent |
| 1 | Plan 1 | 1 | 115 |
| 2 | Plan 2 | 2 | 117 |
| 3 | Plan 1 | 1 | 115 |
| 4 | Plan 2 | 2 | 117 |
| 5 | Plan 1 | 1 | 115 |
| 6 | Plan 2 | 2 | 117 |
-------------------------------
Я хочу обновить данные, если они существуют, и добавить новые данные, если их нет в базе данных.
я хочу обновить данные, если они существуют, и добавить новые, если не существует
-------------------------------
| id | plan | price | percent |
| 1 | Plan 1 | 10 | 120 |
| 2 | Plan 2 | 20 | 125 |
| 3 | Plan 3 | 50 | 130 |
-------------------------------
пожалуйста, помогите мне
============================== ИЗМЕНИТЬ =============================
CREATE TABLE `plans_sub` (
`id` int(11) NOT NULL,
`plan` varchar(250) DEFAULT NULL,
`price` decimal(20,8) DEFAULT NULL,
`percent` decimal(20,4) DEFAULT NULL,
`main_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `plans_sub` (`id`, `plan`, `price`, `percent`, `main_id`) VALUES
(1, 'Plan 1', '1.00000000', '50.0000', 1),
(2, 'Plan 1', '1.00000000', '115.0000', 2),
(3, 'Plan 2', '2.00000000', '117.0000', 2),
ALTER TABLE `plans_sub`
ADD PRIMARY KEY (`id`);