Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数组插入mysql表_Php_Mysql_Arrays - Fatal编程技术网

Php 将数组插入mysql表

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

我有一个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($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;
}
}
回声“;
打印(转储);
回声“;
有什么办法让它工作吗?

您有两个选择:

  • 将数组存储为mysql中的序列化数组(对列使用blob类型)
  • 将数组编码为json并将其存储在mysql中的blob列中
  • 更新:序列化的示例代码,请记住
    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
    
    您有两种选择:

  • 将数组存储为mysql中的序列化数组(对列使用blob类型)
  • 将数组编码为json并将其存储在mysql中的blob列中
  • 更新:序列化的示例代码,请记住
    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
    

    您可以按照以下步骤操作

  • 将数据转换为excel格式
  • 用\转义所需的字符
  • 再次将其转换为csv
  • 然后使用程序或任何其他导入工具导入

  • 您可以按照以下步骤操作

  • 将数据转换为excel格式
  • 用\转义所需的字符
  • 再次将其转换为csv
  • 然后使用程序或任何其他导入工具导入
  • $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表中。

        您希望如何将数据放入表中?可能有一些