[PDO如果ID存在,则在更新时插入MySQL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PDO如果ID存在,则在更新时插入MySQL相关的知识,希望对你有一定的参考价值。
我想用提交表单更新我的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
)
)
如果我提交的数据的ID相同,我想更新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`);
我想用提交表单更新我的sql,如果提交数据不存在,也要插入。我的SQL数据库是这样的------------------------------- | id |计划价格|百分比| 1 | ...
答案
这里是解决方法。
只需在准备好的语句中添加ID
以上是关于[PDO如果ID存在,则在更新时插入MySQL的主要内容,如果未能解决你的问题,请参考以下文章
MySQL:如果 table1 中的行存在,则在 table2 上插入行