我尝试将这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 select查询,因此第一个数组($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);问题是我只得到了第一个数组中的最后一个数字。
提前感谢您的帮助。
发布于 2017-03-12 11:44:09
将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);发布于 2017-03-12 10:57:48
这很简单。您只能得到最后一个结果,因为您将在每个循环中重置$sql变量。每次循环经过这一部分:$sql = "INSERT ...时,它都会删除前一个循环中已经存在的所有内容。试着像这样做,它会像护身符一样起作用:
<?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);
?>https://stackoverflow.com/questions/42743046
复制相似问题