簡體   English   中英

在LOAD DATA LOCAL INFILE PHP中使用變量

[英]Use Variable In LOAD DATA LOCAL INFILE PHP

我一直在研究一個腳本,該腳本會將數據從CSV文件導入到phpMyAdmin數據庫表中。

使用此代碼可以正常工作:

$query = <<<eof
    LOAD DATA LOCAL INFILE '$file'
     INTO TABLE c170720
     FIELDS TERMINATED BY ',' 
     OPTIONALLY  ENCLOSED BY '"'
     LINES TERMINATED BY '\n'
     IGNORE 1 LINES
    (ccode,custarea,ttlpkt)
eof;

但是,如果我使用它,它將不起作用:

$query = <<<eof
    LOAD DATA LOCAL INFILE '$file'
     INTO TABLE '$m_cfile'
     FIELDS TERMINATED BY ',' 
     OPTIONALLY  ENCLOSED BY '"'
     LINES TERMINATED BY '\n'
     IGNORE 1 LINES
    (ccode,custarea,ttlpkt)
    eof;

這是完整的代碼:

<?php
$host       = "localhost";
$user       = "root";
$password   = "";
$db         = "smposf";

$con        = mysqli_connect($host,$user,$password,$db);

$message = "";
if (isset($_POST['submit3'])) 
{
   $m_date=date($sdate);
   $m_yy=substr($m_date,2,2);
   $m_mm=substr($m_date,5,2);
   $m_dd=substr($m_date,8,2);

   $m_cfile='c'.$m_yy.$m_mm.$m_dd;

   $allowed = array('csv');
   $filename = $_FILES['file']['name'];
   $ext = pathinfo($filename, PATHINFO_EXTENSION);
   if (!in_array($ext, $allowed)) 
   {
    // show error message       
      $message = 'Invalid file type, please use .CSV file!';
   } 
   else 
   {

       move_uploaded_file($_FILES["file"]["tmp_name"], "CSV/" . 
       $_FILES['file']['name']);

       $file = "CSV/" . $_FILES['file']['name'];

       $query = <<<eof
                   LOAD DATA LOCAL INFILE '$file'
                   INTO TABLE '$m_cfile'
                   FIELDS TERMINATED BY ',' 
                   OPTIONALLY  ENCLOSED BY '"'
                   LINES TERMINATED BY '\n'
                   IGNORE 1 LINES
                   (ccode,custarea,ttlpkt)
        eof;

        if (!$result = mysqli_query($con, $query)) 
        {
             exit(mysqli_error($con));
        }
        $message = "CSV file successfully imported!";
    }
}
?>

如果我用

LOAD DATA LOCAL INFILE '$file' INTO TABLE c170720 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\\n' IGNORE 1 LINES (ccode,custarea,ttlpkt)

它完全可以正常工作,但是我需要變量$m_cfile 這是因為用戶將每天創建一個帶有特定日期的文件。 怎么了?

INTO TABLE '$m_cfile'更改為INTO TABLE $m_cfile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM