Php 将数组插入mysql表
我有一个csv文件,格式如下:Php 将数组插入mysql表,php,mysql,arrays,Php,Mysql,Arrays,我有一个csv文件,格式如下: a;a1;1;0;1 b;b1;1;0;0 使用下面的php脚本,我可以将其转换为: a;a1;1; a;a1;0; a;a1;1; b;b1;1; b;b1;0; b;b1;0; 使用此选项: $data = array(); foreach($lines as $value) { $value = explode(";", $value); $first = array_splice($value, 0, 2); foreach
a;a1;1;0;1
b;b1;1;0;0
使用下面的php脚本,我可以将其转换为:
a;a1;1;
a;a1;0;
a;a1;1;
b;b1;1;
b;b1;0;
b;b1;0;
使用此选项:
$data = array();
foreach($lines as $value) {
$value = explode(";", $value);
$first = array_splice($value, 0, 2);
foreach($value as $x){
$row = $first;
$row[] = $x;
$data[] = implode(';', $row);
}
}
其中输出为数组:
array(6) {
[0]=>
string(6) "a;a1;1"
[1]=>
string(6) "a;a1;0"
[2]=>
string(6) "a;a1;1"
[3]=>
string(6) "b;b1;1"
[4]=>
string(6) "b;b1;0"
[5]=>
string(6) "b;b1;0"
}
现在我正试图将这个数组插入到我设置的mysql表中,但我遇到了问题
$file = "_ss.csv";
$lines = file($file);
$count = count($lines);
$data = array();
$i = 0;
foreach($lines as $value){
$value = explode(";", $value);
$first = array_splice($value, 0, 2);
foreach($value as $x){
$row = $first;
$row[] = $x;
$data[] = implode(',', $row);
$dump = implode(',', $data);
$query="INSERT INTO csv_test2 VALUES ('$dump')";
$init=mysql_query($query);
$i++;
echo $dump;
}
}
echo "<pre>";
print_r($dump);
echo "</pre>";
$file=“\u ss.csv”;
$lines=文件($file);
$count=计数($line);
$data=array();
$i=0;
foreach(行作为$value){
$value=分解(“;”,$value);
$first=阵列拼接($value,0,2);
foreach(价值为$x){
$row=$first;
$row[]=$x;
$data[]=内爆(“,”,$row);
$dump=内爆(“,”,$data);
$query=“插入csv_test2值(“$dump”)”;
$init=mysql\u查询($query);
$i++;
echo$dump;
}
}
回声“;
打印(转储);
回声“;
有什么办法让它工作吗?您有两个选择:
blob_test2
表有一个插入序列化数组的blob列
$data = array();
foreach($lines as $value) {
$value = explode(";", $value);
$first = array_splice($value, 0, 2);
unset($value[3]); // <---------------------- point
foreach($value as $x){
$first[]=$x;
$data[] = $first;
}
}
foreach($data as $v){
$dump = implode(',', $v);
$query="INSERT INTO csv_test2 VALUES ('$dump')";
$init=mysql_query($query);
}
//mysql not good pls mysqli
您有两种选择:
blob_test2
表有一个插入序列化数组的blob列
$data = array();
foreach($lines as $value) {
$value = explode(";", $value);
$first = array_splice($value, 0, 2);
unset($value[3]); // <---------------------- point
foreach($value as $x){
$first[]=$x;
$data[] = $first;
}
}
foreach($data as $v){
$dump = implode(',', $v);
$query="INSERT INTO csv_test2 VALUES ('$dump')";
$init=mysql_query($query);
}
//mysql not good pls mysqli
您可以按照以下步骤操作
您可以按照以下步骤操作
$data=array();
foreach(行作为$value){
$value=分解(“;”,$value);
$first=阵列拼接($value,0,2);
取消设置($value[3]);//$data=array();
foreach(行作为$value){
$value=分解(“;”,$value);
$first=阵列拼接($value,0,2);
unset($value[3]);//在foreach中没有查询有更好的方法:
$file = "_ss.csv";
$lines = file($file);
$count = count($lines);
$data = array();
$i = 0;
foreach($lines as $value){
$value = explode(";", $value);
$first = array_splice($value, 0, 2);
foreach($value as $x){
$row = $first;
$row[] = $x;
$data[] = implode(',', $row);
$dump = implode(',', $data);
$query="INSERT INTO csv_test2 VALUES ('$dump')";
echo $query."<br/>";
//$init=mysql_query($query);
$i++;
//echo $dump."<br/>";
}
}
- MySQL扩展已弃用,将来将被删除,请使用MySQLi或PDO
在foreach中有一种更好的无需查询的方法:
$file = "_ss.csv";
$lines = file($file);
$count = count($lines);
$data = array();
$i = 0;
foreach($lines as $value){
$value = explode(";", $value);
$first = array_splice($value, 0, 2);
foreach($value as $x){
$row = $first;
$row[] = $x;
$data[] = implode(',', $row);
$dump = implode(',', $data);
$query="INSERT INTO csv_test2 VALUES ('$dump')";
echo $query."<br/>";
//$init=mysql_query($query);
$i++;
//echo $dump."<br/>";
}
}
- MySQL扩展已弃用,将来将被删除,请使用MySQLi或PDO
首先,我建议您打印查询。我对您的代码进行了一些修改,以打印查询:
INSERT INTO csv_test2 VALUES ('a,a1,1')
- 如果您的表
csv_test2
只包含一个存储类型的字段
文本(可以是varchar,char,…),这个查询就可以了
- 但如果它包含更多必填字段(非空、唯一等),则此查询将无法工作。您需要编写:
在csv_test2(a_字段_名称)中插入值('a,a1,1')
- 但是,如果要插入每个字段对应的数组元素,则代码在这种情况下不起作用。您需要这样进行查询:
插入csv_test2值('a','a1','1'))
因此,您需要执行
$dump=内爆(“,”,$data);
首先,我建议您打印查询。我对您的代码进行了一些修改,以打印查询:
INSERT INTO csv_test2 VALUES ('a,a1,1')
- 如果您的表
csv_test2
只包含一个存储类型的字段
文本(可以是varchar,char,…),这个查询就可以了
- 但如果它包含更多必填字段(非空、唯一等),则此查询将无法工作。您需要编写:
在csv_test2(a_字段_名称)中插入值('a,a1,1')
- 但是,如果要插入每个字段对应的数组元素,则代码在这种情况下不起作用。您需要这样进行查询:
插入csv_test2值('a','a1','1'))
因此,您需要执行
$dump=内爆(“,”,$data);
好的,下面是我提出的解决方案,正是我所需要的
foreach(将($lineseparator,$csvcontent)分解为$value){
$lines++;
$value=trim($value,“\t”);
$value=str_replace(“\r”,”,$value);
$value=stru替换(“'”、“\'”、$value);
$linearray=分解($fieldseparator,$value);
$linemysql=内爆(“,”,$linearray);//sitas rdy siuntimui i db
$first=阵列拼接($linearray,0,2);
外汇($x的线性排列){
$row=$first;
$row[]=$x;
$data[]=内爆(“,”,$row);
}
}
foreach($id形式的数据){
回声“;
var_dump($id);
回声“;
$query=“插入csv_test3值(“$id”)”;
$init=mysql\u查询($query);
}
这是一段代码的一部分,它基本上接受一个csv文件,格式为@OP,将其转换并将所有内容转储到一个mysql表中。好的,下面是我提出的解决方案,正是我所需要的
foreach(将($lineseparator,$csvcontent)分解为$value){
$lines++;
$value=trim($value,“\t”);
$value=str_replace(“\r”,”,$value);
$value=stru替换(“'”、“\'”、$value);
$linearray=分解($fieldseparator,$value);
$linemysql=内爆(“,”,$linearray);//sitas rdy siuntimui i db
$first=阵列拼接($linearray,0,2);
外汇($x的线性排列){
$row=$first;
$row[]=$x;
$data[]=内爆(“,”,$row);
}
}
foreach($id形式的数据){
回声“;
var_dump($id);
回声“;
$query=“插入csv_test3值(“$id”)”;
$init=mysql\u查询($query);
}
这是一段代码的一部分,它基本上接受一个csv文件,格式为@OP,将其转换并将所有内容转储到mysql表中。您希望如何将数据放入表中?可能有一些