利用PHP对数组赋值时下标变量会自动递增的特点,可以很方便用循环将数据存入一个数组。例如:$arr[] = 'a'; 这条语句会将字符a存入数组变量$arr中,如果$arr不存在则会新建一个;若已存在,则将$arr数组的下标变量递增1后存入字符。也就是说,如果已有$arr[0]='a', 那么执行 $arr[] = 'b'; 后,数组其实是进行了$arr[1] = 'b' 的操作。
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了镇远免费建站欢迎大家使用!
订单提交后:
$_POST['list'] 的值会是:
array(a,b,c,d,e,a,b,a,b,c,d);
根本就没有使用价值,即无法分清楚是这些选项是属于哪个名称的。所以,要么用js先在提交之前加工一个“list”的值,或者改交下list的名称,如下:
input type="checkbox" name="list[]" value="a" /
改为:
input type="checkbox" name="list_sina[]" value="a" /
其他的按些修改。
在提交之后的处理代码如下:
$title = isset($_POST['title']) ? $_POST['title'] : array();
$insert_data = array();
foreach($title as $row){
$name = trim($row);
$list = isset($_POST['list_'.$name]) ? implode(',',$_POST['list_'.$name]) : '';
$insert_data[] = "('$name','$list')";
}
if(!empty($insert_data)) $mysql-query('INSERT INTO mysql_table(name,list)VALUES '.implode(',',$insert_data));
这样的数据库查询语句为:
INSERT INTO mysql_table(name,list)VALUES ('sina','a,b,c,d,e'),('qq','a,b'),('ifeng','a,b,c,d')
可以按照 ly4885806 的方法 序列化成字符串插入数据库,不过这个只能插入一个字段不循环
如果你的数据是需要插入多个行和字段的话只能循环了
$Array = Array ( [0] = Array ( [0] = 张三 [1] = 70 ) [1] = Array ( [0] = 李四 [1] = 80 ) [2] = Array ( [0] = 王五 [1] = 90 )
?
$in_value_arr = array();
foreach($Array as $key=$value){
foreach($value as $k=$v){
$in_value_arr[]="(**,**,**)";
}
$in_value = '('.implode('),(', $in_value_arr).')';
$sql = "INSERT INTO tbl_name (col1,col2) VALUES{$in_value};";
}
?
把数组转成json或其他字符串在写入数据库,不转换字符串无法写入或自由Array,我是没试过,反正我知道是无法写入,我都是转成json后在写入。
?php
$array=array(
"data1"="data1",
"data2"=array(
"data22"="data22",
"data222"="data222"
),
"data3"="data3"
);
$encode=json_encode($array); //数据库写入转换
$addslashes=addslashes(json_encode($array)); //如果只用英文字符的话可以直接用上面,用中文或有带斜杠/,PHP写入数据库的时候会去掉斜杠/,所以addslashes函数在转换下写入
$decode=json_decode($array,true); //数据库读取转换
?
lxydjx 正解,我来详细补充一下吧。未经测试、、、
//初始化
$sql = array();
// 从 a.php POST 过来的值
$_POST["xinxi"] = "20-2,19-1,18-1";
// 拆分为 array("20-2", "19-1", "18-1");
$post_data = explode(",", $_POST["xinxi"]);
// 循环数组
for($i = 0; $i count($post_data); $i++) {
// 再次拆分每一条信息为 array("20", "2"), array("19", "1"), array("18", "1")
$details = explode("-", $post_data[$i]);
// 将每一条信息添加到 $sql 数组中
array_push($sql, "(20121015194535193356, ".$details[0].", ".$details[1].")");
}
// 用 , 连接,转换为 string
$sql = implode(",", $sql);
// 插入数据库
mysql_query("INSERT INTO table_sales (dingid, detailsid, buynumber) VALUES ($sql)");