部分代码:
$info=$_POST['info'] ;
print_r($info); //结果如下
Array ( [title] => Array ( [0] => LM324 [1] => LM1117 LM339 [2] => LM339 ......) [price] => Array ( [0] => 0.29 [1] => 0.11 [2] => 0.33......) [amount] => Array ( [0] => 2000 [1] => 3000 [2] => 3000 ......))
请问PHP中如何将上述数组$info写入mysql数据库?
前台html代码:
<input type="text" name="info[title][]" />
<input type="text" name="info[price][]" />
<input type="text" name="info[amount][]" />
$info=$_POST['info'] ;
$values = "";
for($i = 0; $i < count($info['title']); $i++){
$values .= "('{$info['title'][$i]}', '{$info['price'][$i]}', '{$info['amout'][$i]}'),";
}
$values = rtrim($values, ',');
mysql_query("insert into tablename values ".$values);
//这种情况适用于比较少的行插入
如果数据量比较大
将数据按行存入文本中
for($i = 0; $i < count($info['title']); $i++){$values .= "{$info['title'][$i]}\t{$info['price'][$i]}\t{$info['amout'][$i]}\r\n";
}
file_put_content('data.txt', $values);
mysql_query("load data local infile 'data.txt' into table tablename");追问
谢谢,请问插入时如何对应数据库表中的字段?表有很多字段的
追答可以说下表中有哪些字段吗,数组已经确定只有三个字段的数据是吧?
追问字段有20多个啊,插入语句修改为:
mysql_query("insert into test(title,price,amount) values ".$values);
这样应该可以吧?按$values 值的顺序,title,price,amount都是表中的字段
是这样,但是你的表其他字段确定允许为空吗
追问可以的。再问下,如何计算导入成功的信息条数?要排除空白行
追答没有现成的函数,有个mysql_affected_rows可以获取前一次操作影响的行数,但是空白行既然已经插入表了,那必然也算影响的一行,如果想排除空白行,
for($i = 0; $i < count($info['title']); $i++){
干嘛不在这里面排除,干嘛非得插入后再考虑非空白行的情况
谢谢,已在客户端判断排除了。