从while循环获取数据到动态表并用php插入的最简单方法是什么 有工作代码吗?让我学习 我可以成功获取数组中的数据并回显页面中的所有数据,但是我无法将其插入数据库,仅插入了最后一行
答案 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);"> ';
$output.= '<input type="number" name="b['.$i.']" oninput="compute(this,i,false);"> ';
$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>';