Php mysql,从 3 个不同的数组(一个长度不同)插入数据

标签 php mysql arrays

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

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 选择查询,所以第一个数组 ($arrayUsers) 总是不同的长度,但是第二个 ($arrayData) 和第三个 ( $arrayTurno) 将始终保持相同的长度。

我想要这样的东西:

|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                 |
|...            |...               |...               |

等等。

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

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);

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

在此先感谢您的帮助。

最佳答案

INSERT INTO 语句放在 for 循环之外

$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);

关于Php mysql,从 3 个不同的数组(一个长度不同)插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743046/

相关文章:

mysql - 由于旧的 mysql 版本,删除查询不起作用

Java "Connection"类未连接到数据库

python - 将 numpy 数组作为单列保存到 txt 文件?

sql - MySQL表中varchar长度的重要性

java - 比较器不适用于 Arrays.sort

javascript - 使用箭头函数将数组缩减为对象

php - PDO:如何用数据库表中的行填充html表?

php - WordPress Roots 主题摆脱所有页面的侧边栏

php - 在 PHP 中获取 Javascript 变量

php - 获取选定列的正则表达式