首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php mysql,插入来自3个不同数组的数据(一个具有不同的长度)

Php mysql,插入来自3个不同数组的数据(一个具有不同的长度)
EN

Stack Overflow用户
提问于 2017-03-12 10:28:48
回答 2查看 68关注 0票数 1

我尝试将这3个不同的数组插入到我的表中:

代码语言:javascript
复制
Array
(
    [0] => 1
    [1] => 2
)
Array
(
    [0] => 2017-01-01
    [1] => 2017-01-02
    [2] => 2017-01-03
    [3] => 2017-01-04
    [4] => 2017-01-05
    [5] => 2017-01-06
    [6] => 2017-01-07
    [7] => 2017-01-08
    [8] => 2017-01-09
    [9] => 2017-01-10
    [10] => 2017-01-11
    [11] => 2017-01-12
    [12] => 2017-01-13
    [13] => 2017-01-14
    [14] => 2017-01-15
    [15] => 2017-01-16
    [16] => 2017-01-17
    [17] => 2017-01-18
    [18] => 2017-01-19
    [19] => 2017-01-20
    [20] => 2017-01-21
    [21] => 2017-01-22
    [22] => 2017-01-23
    [23] => 2017-01-24
    [24] => 2017-01-25
    [25] => 2017-01-26
    [26] => 2017-01-27
    [27] => 2017-01-28
    [28] => 2017-01-29
    [29] => 2017-01-30
    [30] => 2017-01-31
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 3
    [4] => 3
    [5] => 3
    [6] => 1
    [7] => 2
    [8] => 4
    [9] => 4
    [10] => 4
    [11] => 4
    [12] => 1
    [13] => 2
    [14] => 3
    [15] => 3
    [16] => 3
    [17] => 3
    [18] => 1
    [19] => 2
    [20] => 4
    [21] => 4
    [22] => 4
    [23] => 4
    [24] => 1
    [25] => 2
    [26] => 3
    [27] => 3
    [28] => 3
    [29] => 3
    [30] => 1
)

数组中填充了一些sql select查询,因此第一个数组($arrayUsers)的长度始终不同,但第二个数组($arrayData)和第三个数组($arrayTurno)的长度始终相同。

我想这样做:

代码语言:javascript
复制
|id(first array)|date(second array)|shift(third array)|
|1              |2017-01-01        |1                 |
|1              |2017-01-02        |2                 |
|1              |2017-01-03        |3                 |
|1              |2017-01-04        |3                 |
|...            |...               |...               |
|2              |2017-01-01        |1                 |
|2              |2017-01-02        |2                 |
|2              |2017-01-03        |3                 |
|2              |2017-01-04        |3                 |
|...            |...               |...               |

诸若此类。

我正在尝试使用以下代码:

代码语言:javascript
复制
foreach($arrayUsers as $user) {

    $sql = "INSERT INTO `escala`(`id_assistente`, `id_data`, `id_horario`) VALUES";

    for ($i = 0; $i < count($arrayTurno); $i++) {
        $sql .= "('$user', '$arrayData[$i]','$arrayTurno[$i]'),";
    }

}

$sql = rtrim($sql, ',');
echo $sql;
$result = mysqli_query($conn,$sql);

问题是我只得到了第一个数组中的最后一个数字。

提前感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-12 11:44:09

INSERT INTO语句放在for循环之外

代码语言:javascript
复制
$sql = "INSERT INTO `escala`(`id_assistente`, `id_data`, `id_horario`) VALUES";
    foreach($arrayUsers as $user) {             
        for ($i = 0; $i < count($arrayTurno); $i++) {
            $sql .= "('$user', '$arrayData[$i]','$arrayTurno[$i]'),";
        }
    }
    $sql = rtrim($sql, ',');
    echo $sql;
    $result = mysqli_query($conn,$sql);
票数 1
EN

Stack Overflow用户

发布于 2017-03-12 10:57:48

这很简单。您只能得到最后一个结果,因为您将在每个循环中重置$sql变量。每次循环经过这一部分:$sql = "INSERT ...时,它都会删除前一个循环中已经存在的所有内容。试着像这样做,它会像护身符一样起作用:

代码语言:javascript
复制
<?php

$arrayUsers = '';// array here
$arrayData = '';// array here
$arrayTurno = '';// array here
$sql = '';

foreach($arrayUsers as $user){
    foreach($arrayData as $arrayDataKey => $arrayDataValue){
        $sql .= "INSERT INTO `escala`(`id_assistente`, `id_data`, `id_horario`) VALUES";

        $sql .= "('". $user ."', '". $arrayDataValue ."','". $arrayTurno[$arrayDataKey] ."'),";
    }
}

$sql = rtrim($sql, ',');
echo $sql;
$result = mysqli_query($conn,$sql);

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42743046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档