使用PHP将数组插入MySQL DB

时间:2017-01-23 17:47:40

标签: php mysql arrays

大家好我是php的新手,所以我需要一些帮助。

我有一些包含一些信息的.txt,让我们这样说:

970,3584,D53,20170102,OL7GU9,9607,1AT03U2,A,
970,3588,F7A,20170102,OL7GY6,9607,1AT03U2,A,

我希望将这些值中的每一个插入到我的数据库中(我已经有了连接)。

到目前为止,我的代码是:

$myfile = fopen("crawler.txt", "r") or die("Unable to open file!");

    if ($myfile) {
        $columns = explode(",", fread($myfile, filesize("crawler.txt")))
    }

此时我有一个这样的数组:

array(8825) { [0]=> string(3) "970" [1]=> string(4) "3584" [2]=> string(3) "D53" [3]=> string(8)
"20170102" [4]=> string(6) "OL7GU9" ....and so goes 

如何将数组中的每个元素插入数据库?

我目前的代码:

foreach ($columns as $key => $value) { 
    $var1= $columns[0]; 
    $var2= $columns[1]; 
    $var3= $columns[2]; 
    $var4= $columns[3]; 
    $var5= $columns[4]; 
    $var6= $columns[5]; 
    $var7= $columns[6]; 
}

1 个答案:

答案 0 :(得分:1)

基本上你只需要构建插入查询并像这样执行它。我在这个例子中使用了PDO:

$myfile = fopen("crawler.txt", "r") or die("Unable to open file!");

if ($myfile)
{
  while (($line = fgets($myfile)) !== false)
  {
    // remove the comma at the end of every line
    $line = rtrim($line, ',');

    // example with PDO
    $sql = 'INSERT INTO table_name (column_name1, column_name2, ...) VALUES (:param1, :param2, ...)';

    // build the parameter array
    $elements = explode(',', $line);

    // prepare the parameter array
    $parameters = array();
    for($i=0;$i<len($elements); $i++)
    {
      $parameters["param$i"] = $elements[$i];
    }

    $insertquery = $connection->prepare($sql);
    $insertquery->execute($parameters);
  }

  fclose($myfile);
}

我们遍历文本文件中的每一行。每一行都有一个逗号(,)。我们需要删除它,因为如果我们不这样做,explode将返回另一个空数组元素。接下来,我们只需构建插入查询并将其传递给数组元素。