插入数组的元素数量可以变化为mysql

时间:2016-03-03 07:27:01

标签: php mysql arrays csv

我已经为我的上一个问题找到了一些解决方案:Trouble inserting data from csv into mysql database with unknown number of columns,所以让我解释一下我现在的问题。 由于我的应用程序的用户可以在我的数据库的表中创建自定义列,因此我通过运行此查询找到了存储列的数量和名称的方法:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='$tblname'" 

我将结果存储在$anotherArray变量中。现在,由于我的用户可以选择将CSV文件导入其自定义表(具有自定义列数),我这样做了:

$file = $_FILES['file']['tmp_name'];
        $handle = fopen($file, "r");
        $name = $_FILES['file']['name'];
if (strrpos($name, '.csv', -4)) {//recognises if uploaded file is .csv
        do {
           if ($data[0]) {
                $query = "INSERT INTO $tabela (";
                $last = end($anotherArray);//$anotherArray holds names and number of columns user have made
                foreach ($anotherArray as $something) {
                    if ($something != $last) {
                        $query .= "" . $something . ",";
                        } else {
                            $query .= "" . $something . ")";
                            }
                        }

            $query .= "VALUES (";

因为上传的csv文件看起来像这样:enter image description here

请再次注意,这是一个测试文件,一些用户可能会在他的表中生成9个自定义列,并且他的文档在csv文件的一行中将有9个值。 我制作了脚本的这一部分,用csv的值创建一个数组:

$lengtara = count($anotherArray);

                $length1 = count($data);//$data is array with csv file values
                $nizDuzina = count($anotherArray);
                $restructured1 = [];
                for ($i = 0; $i < $length1; $i += $nizDuzina) { // note the $i+=$nizDuzina increments $i by number of columns in database table.
                for ($j = 0; $j < $nizDuzina; $j++) {
                $restructed1 [$j] = $data[$i + $j];//this is a key thing in my script!
                    }
        }
        }
        }
                while ($data = fgetcsv($handle, 1000, ",", "'")) ;
$query = rtrim($query, ',');
                $query .= ")";
                //var_dump($query);
                $rez = $mysqli->query($query);

所以,当我print_r($restructed1)时,我得到一个这样的数组:

Array ( [0] => 123123123 [1] => Ognjen [2] => Babic ) Array ( [0] => 23423423 [1] => Neven [2] => Babic ) Array ( [0] => 235646345 [1] => Vanja [2] => Babic ) Array ( [0] => 4853424 [1] => Nikola [2] => Babic ) Array ( [0] => 34545747 [1] => Viktor [2] => Sovilj )

现在这是我的问题的一个关键点:如何将这样的数组导入到数据库中,但是以一些动态的,通用的方式,所以如果我的数组中的数组有,那么它可以适用于exaple 2或7个元素?

0 个答案:

没有答案