Php 加载数据填充不起作用

Php 加载数据填充不起作用,php,csv,Php,Csv,我正在尝试通过csv文件批量上传。我的csv文件位于webroot/csv/data.csv中。数据如下: name,email santo, abc@gmail.com 我的代码: $sql = "LOAD DATA INFILE '$filepath' INTO TABLE customers FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY ',,,\\r\\

我正在尝试通过csv文件批量上传。我的csv文件位于webroot/csv/data.csv中。数据如下:

name,email
santo, abc@gmail.com
我的代码:

$sql = "LOAD DATA INFILE '$filepath'
    INTO TABLE customers
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '\"' 
    LINES TERMINATED BY ',,,\\r\\n'
    IGNORE 1 LINES 
    (name, email)";
    $this->Customer->query($sql);
这里

获取错误:

C:\server\mysql\data\serverhtdocsdemo-home25appwebrootCSVdata.csv' not found (Errcode: 2 "No such file or directory")
我检查文件是否存在,并且sql中的文件位置是否正常:

SQL Query: LOAD DATA INFILE 'C:\server\htdocs\demo-home25\app\webroot\CSV\data.csv' INTO TABLE customers FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ',,,\r\n' IGNORE 1 LINES (name, email)

我的代码有什么问题

我也有同样的问题。有时,mysql服务器和客户端对文件位置的理解不同

LOCAL
修饰符(作为
LOAD DATA LOCAL infle
)添加到查询中

$sql = "LOAD DATA LOCAL INFILE '$filepath'
INTO TABLE customers
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"' 
LINES TERMINATED BY ',,,\\r\\n'
IGNORE 1 LINES 
(name, email)";
$this->Customer->query($sql);
您试图使用“加载数据本地填充”

就你而言:

$sql = "LOAD DATA LOCAL INFILE '$filepath'
    INTO TABLE customers
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '\"' 
    LINES TERMINATED BY ',,,\\r\\n'
    IGNORE 1 LINES 
    (name, email)";
    $this->Customer->query($sql);
“如果指定了LOCAL,则该文件将由客户端主机上的客户端程序读取并发送到服务器。”来自


中回答您是否确定已将DS定义为某个值,它不是PHP定义的值,您必须自己设置它。您还需要一个
DS
介于
WWW\u ROOT'之间CSV'
WWW\u ROOT。DCSV'
一旦您实际定义了它。我建议在DS中也使用unix正向斜杠,而不是DOS反向斜杠。在$sql之前,$filepath变量的确切内容是什么?正如我所解释的,我将csv文件的路径设置为$filepath变量,即:$filepath=WWW_ROOTCSV’。DS.'data.csv'@据我所知,RydrychWWW_根自动添加斜杠。我也检查一下。RiggsFollyThanks。现在它显示了另一个错误:PDOStatement::execute()[PDOStatement.execute]:LOAD DATA LOCAL inflied[CORE\Cake\Model\Datasource\DboSource.php,第460行]检查用户在mysql中的权限。如果没有解决,这里还有其他类似的情况
LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(col1, col2, col3, col4, col5...);
$sql = "LOAD DATA LOCAL INFILE '$filepath'
    INTO TABLE customers
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '\"' 
    LINES TERMINATED BY ',,,\\r\\n'
    IGNORE 1 LINES 
    (name, email)";
    $this->Customer->query($sql);