Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用基于以下数组的多个Update语句_Javascript_Php_Mysql_Arrays_Ajax - Fatal编程技术网

Javascript 使用基于以下数组的多个Update语句

Javascript 使用基于以下数组的多个Update语句,javascript,php,mysql,arrays,ajax,Javascript,Php,Mysql,Arrays,Ajax,我有一个名为sched的表,需要根据需要进行更新 目前,我创建了一个HTML输出,输出sched表的当前值,供用户根据需要进行编辑。我还准备了脚本来收集这些更改,并通过ajax/PHP发送它们来更新上述db表 我已经发送了两个单独的数组,并使用array\u combine() 发送到PHP并通过PHP组合的结果示例: [locationID_1] => 4~West [instructorID_1] => 12~Kasey

我有一个名为
sched
的表,需要根据需要进行更新

目前,我创建了一个HTML输出,输出
sched
表的当前值,供用户根据需要进行编辑。我还准备了脚本来收集这些更改,并通过ajax/PHP发送它们来更新上述db表

我已经发送了两个单独的数组,并使用
array\u 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
因此,对于最后一个键值对,可以将列名视为每个键的第一部分(对于最后一个条目):

因此,为了更详细地介绍这个示例,[]括号内的数字表示要更新的表行的id(12,sched)

用下划线分隔的位是列的名称(结束日期)

分配给每个键的值都是在ajax post之前使用从其自己的db表中检索到的自己的id进行分段的

我的问题是如何最好地使用所描述的方法更新目标db表中任意数量的行

我知道在javascript中显示这么多db信息会有很多安全问题,但这更像是一个有趣和学习的项目(特别是因为我在自学)

要友善,但要有信息——我很乐意学习和进步

谢谢
根据我的理解,您需要创建动态更新语句。那么为什么不创建一个简单的服务器端页面并将数据发布到该页面,然后使用下面的查询呢

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
    }

你为什么要合并?如果这是一个多维数组,应该会更容易
    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
    }