我需要在数据库中插入动态数组值。当我在row_count
上调用数组时,随着用户输入值的增加,动态数组的数量也会增加。
for ($i = 0; $i < $row_count; $i++) {
echo "<td>" . "Total Consumption in kw/h" . "</td>";
$hj[] = $uy11[$i] + $uy112[$i] + $uy111[$i];
echo "<td>" . round(($hj[$i]), 2) . "</td>";
if ($tube11 == $tube11 && $fan1 == $fan1 && $bulb1 == $bulb1) {
$all[] = $tube11[$i] + $fan1[$i] + $bulb1[$i];
echo "<td>" . round(($all[$i]), 2) . "</td>";
$bu[] = $hj[$i] - $all[$i];
echo "<td>" . round(($bu[$i]), 2) . "</td>";
$bu1[] = ($bu[$i] / $hj[$i]) * 100;
echo "<td>" . round(($bu1[$i]), 2) . "</td>";
} else if ($tube12 == $tube12 && $fan12 == $fan12 && $bulb12 == $bulb12) {
$aq[] = $tube12[$i] + $fan12[$i] + $bulb12[$i];
echo "<td>" . $aq . "</td>";
}
echo "</tr>";
}
$asp = implode($hj, ',');
$asp1 = explode(',', $asp);
print_r($asp);
$asp2 = implode($all, ',');
$asp22 = explode(',', $asp2);
print_r($asp2);
$sql = "INSERT INTO dea (did,c1, c2, timestamp) VALUES ('',$asp, $asp2,'" . date("Y-m-d H:i:s") . "')";
$stmt = mysql_query($sql) or die(mysql_error());
i上面的代码针对一个时间数组执行,但如果数组值的数量增加,则不会将它们插入数据库中。类似于如果在$asp
中的值是2
,而$asp1
的值是3
,则会将它们插入db中,但如果$asp
的值为[0]=1, [1]=2
,则不会插入。我需要插入这两个值。
$asp是这样的数组时:
[0] => 1
[1] => 2
[2] => 3
你可以通过做来获得值
foreach($asp as $key => $value){
echo $value;
}
既然你是一个懒惰的程序员,这就是你可以做的事情:如果我答对了问题,你想在数据库中插入$asp和$asp2。
$new_array = array_combine($asp,$asp2);
foreach($new_array as $key => $value){
$sql = "INSERT INTO dea (did,c1, c2, timestamp) VALUES ('',$key, $value,'".date("Y-m-d H:i:s")."')";
$stmt = mysql_query($sql) or die(mysql_error());
}
顺便说一句,就像杜说的:你的if语句没有任何意义。
if ($tube11==$tube11 && $fan1==$fan1 && $bulb1==$bulb1)
这将永远是真的。
您需要找到一些方法来对表中的数组进行编码。
任一:
- 使用"基"表和单独的值表,并链接到数组列表
- 对整个数组进行编码并将其序列化为blob
- 将数组编码为base64(或类似代码),并将其写入字符