-2

我需要在数据库中插入动态数组值。当我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());

我上面的代码正在执行一次数组,但如果数组值的数量增加,它们不会插入数据库中。就像如果$asp值是2$asp1值是3它们被插入到数据库中,但如果值$asp[0]=1, [1]=2,则没有插入。我需要插入这两个值。

4

2 回答 2

0

当 $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());
}

顺便说一句,就像 Doon 所说:你的 if 语句没有任何意义。

if ($tube11==$tube11 && $fan1==$fan1 && $bulb1==$bulb1)

这将永远是真的。

于 2013-07-02T14:11:02.743 回答
0

您需要找到某种方法来对表中的数组进行编码。

任何一个:

  1. 使用带有单独表的“基本”表作为值并链接到数组列表
  2. 编码整个数组并将其序列化为 blob
  3. 将数组编码为 base64(或类似)并将其写入字符
于 2013-07-02T14:11:15.217 回答