mysql - 插入到由主键链接的表中

标签 mysql codeigniter join insert

我有两个具有关系的表

+----------------------+      +-----------------+
|        Shape         |      |  Point_Values   |
+----------------------+      +-----------------+
| shape_id (KEY)       |      | id (KEY)        |
| shape_name (VARCHAR) |      | point_x (INT)   |
+----------------------+      | point_y (INT)   |
                              | shape_id (INT)  |
                              +-----------------+

如何在同一请求中同时获取形状和点,这意味着当形状完成时,会出现一个点数组和形状名称/id 。我必须在表中插入,但 shape_id 都匹配。

<小时/>

根据要求

Array
(
    [name] => "circle"
    [points] => Array
        (
            [x] => Array
                (
                    [0] => 182
                    [1] => 190
                    [2] => 215
                    [3] => 240
                    [4] => 291
                    [5] => 328
                    [6] => 364
                    [7] => 391
                    [8] => 425
                    [9] => 459
                    [10] => 487
                    [11] => 512
                    [12] => 529
                    [13] => 540
                    [14] => 551
                    [15] => 560
                    [16] => 570
                    [17] => 581
                    [18] => 592
                    [19] => 604
                    [20] => 617
                    [21] => 628
                    [22] => 635
                    [23] => 639
                    [24] => 642
                    [25] => 642
                    [26] => 640
                    [27] => 630
                    [28] => 619
                    [29] => 606
                    [30] => 591
                )

            [y] => Array
                (
                    [0] => 165
                    [1] => 159
                    [2] => 150
                    [3] => 147
                    [4] => 144
                    [5] => 144
                    [6] => 147
                    [7] => 152
                    [8] => 162
                    [9] => 172
                    [10] => 184
                    [11] => 199
                    [12] => 211
                    [13] => 219
                    [14] => 225
                    [15] => 228
                    [16] => 231
                    [17] => 232
                    [18] => 233
                    [19] => 233
                    [20] => 231
                    [21] => 222
                    [22] => 204
                    [23] => 189
                    [24] => 156
                    [25] => 133
                    [26] => 120
                    [27] => 100
                    [28] => 85
                    [29] => 69
                    [30] => 54
                )

        )

)

最佳答案

考虑到该数组,这段代码应该可以很好地工作。它执行一次初始插入以从表格形状中获取 id,并且所有点都会批量插入。

function insertShape($s){
    mysql_query('INSERT INTO shape (name) VALUES ("'.$s['name'].'");');
    $id=mysql_insert_id();
    $i=0;
    for(;;){
        if(!isset($s['points']['x'][$i], $s['points']['y'][$i]))break;
        $inserts[]='('.$id.','.$s['points']['x'][$i].','.$s['points']['y'][$i].')';
        $i++;
    }
    mysql_query('INSERT INTO point_values (shape_id,x,y) VALUES '.implode(',',$inserts));
}

如果您的情况不需要对按键进行严格的测试,我可能会将其设为 foreach。

关于mysql - 插入到由主键链接的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5630533/

相关文章:

mysql - mysql中如何更改某列的数据?

php - PDO 获取 Bcrypted 密码?

MySQL 链式触发器

php - 如何从 Codeigniter 中的 URL 中删除 "&per_page="

MySQL 在具有不同值的同一列上两次连接同一个表,仅返回最近的行

mysql - 从列中选择顶部值

php - 按时间戳选择 block 顺序并按 id 随机化

php - 如何在codeigniter中的一列中插入多个字段数据

mysql - Rails 中的嵌套连接

php - 检索并格式化 MySQL 结果列中的所有 hasMany 记录