基于以下数组使用的Multi-Update语句
Multi Update statement using based off the following array
我有一个名为sched
的表,需要根据需要进行更新。
目前,我创建了一个HTML输出,它输出sched
表的当前值,供用户根据自己的意愿进行编辑。我还准备了一些脚本来收集这些更改,并通过ajax/PHP发送它们来更新所述数据库表。
我已经发送了两个单独的数组,并使用array_combine()
将它们连接起来。
发送到PHP并通过PHP进行组合的结果示例:
[locationID_1] => 4~West
[instructorID_1] => 12~Kasey
[roomID_1] => 7~Studio 1
[classtypeID_1] => 9~Yoga
[weekdayID_1] => 5~Friday
[time_1] => 05:25
[start_date_1] => 2014-09-01
[end_date_1] => 2014-09-27
[locationID_12] => 2~Oaks
[roomID_12] => 2~Body Room
[instructorID_12] => 3~Susan
[classtypeID_12] => 13~Fitness
[weekdayID_12] => 2~Tuesday
[time_12] => 05:25
[start_date_12] => 2014-09-03
[end_date_12] => 2014-09-28
因此,对于最后一个键值对,列名可以被认为是每个键的第一部分(对于最后一项):
UPDATE sched SET
end_date=2014-09-28
WHERE schedID=12
因此,为了进一步说明这个例子,[]括号内的数字指定了要更新的表的行的id(12,sched)。
用下划线分隔的位是列的名称(end_date)。
在ajax发布之前,分配给每个键的值都是用它自己的id来拼凑的,这个id是从它自己的db表中检索的。
我的问题是如何最好地使用所描述的方法更新目标数据库表中的任意数量的行。
我知道在javascript等中透露这么多数据库信息会有很多安全问题,但这更像是一个有趣和学习的项目(尤其是因为我自己教这个)。
要善良,但要有见识——我听到的是学习和进步。
谢谢D
据我所知,您需要创建动态更新语句。那么为什么不创建一个简单的服务器端页面并将数据发布到该页面,然后使用下面的查询呢
INSERT INTO sched({COLUMN_NAMES}) VALUES({COLUMN_VALUES}) ON DUPLICATE KEY UPDATE;
希望这对你有帮助。
与其组合数组,我建议使用更像以下的数据结构。从人类和算法的角度来看,数据更干净、更容易访问。
$sched = array
(
1 => array
(
'locationID' => '4~West',
'roomID' => '7~Studio 1',
'instructorID' => '12~Kasey',
'classtypeID' => '9~Yoga',
'weekdayID' => '5~Friday',
'time' => '05:25',
'start_date' => '2014-09-01',
'end_date' => '2014-09-27'
),
12 => array
(
'locationID' => '2~Oaks',
'roomID' => '2~Body Room',
'instructorID' => '3~Susan',
'classtypeID' => '13~Fitness',
'weekdayID' => '2~Tuesday',
'time' => '05:25',
'start_date' => '2014-09-03',
'end_date' => '2014-09-28'
)
);
然后像这样循环:
foreach ($sched as $id => $data)
{
$query = "UPDATE sched SET ";
$sets = array();
foreach ($data as $k => $v)
$sets[] = "$k = '$v'";
$query .= implode(', ', $sets) . " WHERE schedID = $id";
// do something with query
}
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 自动修复”;语句前缺少分号“;
- 如何在 API 调用后和 if 语句中启用提交按钮
- 是“;x==a||b”;以及“;x==a||x==b”;JavaScript中的等效语句
- 带有多个elseif的Javascript if语句
- 这个条件语句的逻辑有问题
- Sharepoint JScript if语句未执行
- 为什么继续;语句冻结浏览器
- Javascript:If-then语句在函数中不起作用
- SharePoint 2010 Jquery/JSON Rest Multiple OR语句-如何
- for循环中的javascript if语句找不到==
- 当使用extern和目标JavaScript时,我如何强制Haxe编译器使用require语句
- chrome.tabs.update() 重定向到 'chrome-extension://invalid/'
- jquery if语句返回return wong语句
- 带有if和else语句的PHP UPDATE
- 使用php的动态变量从sql select和update语句的下拉列表中获取
- 基于以下数组使用的Multi-Update语句
- 使用mysqljs执行UPDATE语句
- 为什么我的MYSQL UPDATE语句不会更新