使用PHP将while循环数据从动态表插入数据库

时间:2019-01-27 13:58:42

标签: php

从while循环获取数据到动态表并用php插入的最简单方法是什么 有工作代码吗?让我学习 我可以成功获取数组中的数据并回显页面中的所有数据,但是我无法将其插入数据库,仅插入了最后一行

1 个答案:

答案 0 :(得分:0)

如果这是您的数组

$data = Array(
  Array('col_1' => 1, 'col_2' => 2, 'col_3' => 3),
  Array('col_1' => 4, 'col_2' => 5, 'col_3' => 6),
  Array('col_1' => 7, 'col_2' => 8, 'col_3' => 9),
);

然后您可以将这3行插入表中

foreach($data as $row)
{
  $query = 'INSERT INTO my_table '.my_insert($row,'id');
  $result = mysqli_query($connection, $query) or trigger_error($query.'<br>'.mysqli_error($connection),E_USER_ERROR);
}

function my_insert($arr,$exclude)
{
  global $connection;

  $vals = Array();
  if(!is_array($exclude)) $exclude = Array($exclude);
  $arr = array_diff_key($arr,array_flip($exclude));
  foreach($arr as $key=>$value)
  {
    if(is_null($value)) $vals[] = 'NULL';
    else
    {
            if($value==='NULL') $vals[] = 'NULL';
            elseif(is_string($value)) $vals[] = '"'.mysqli_real_escape_string($connection, $value).'"';
            else $vals[] = $value;
    }
  }
  return '('.implode(',',array_keys($arr)).') VALUES ('.implode(',',$vals).')';
}

更新

不是最佳解决方案-仅出于演示目的:

$output = '<form method="post" name="items">';
for($i=1;$i<=10;$i++)
{
  $output.= '<div><input type="number" name="a['.$i.']" oninput="compute(this,i,true);"> &nbsp; ';
  $output.= '<input type="number" name="b['.$i.']" oninput="compute(this,i,false);"> &nbsp; ';
  $output.= '<input type="number" name="c['.$i.']" readonly></div>';
}
$output.= '</form>';
$output.= '<script>
function compute(elem, index, first)
{
  var v1 = parseFloat(elem.value), v2;
  if(first)
  {
    v2 = parseFloat(document.items.elements["b[" + index + "]"].value);
  }
  else
  {
    v2 = parseFloat(document.items.elements["a[" + index + "]"].value);
  }
  if(isNaN(v1)) v1 = 0;
  if(isNaN(v2)) v2 = 0;
  document.items.elements["c[" + index + "]"].value = v1 + v2;
}
</script>';