Php MYSQL加载数据填充正确的文件路径

Php MYSQL加载数据填充正确的文件路径,php,mysql,Php,Mysql,我正在尝试使用LOAD DATA INFILE将CSV的zip文件(从我的数据库导出)上载到mysql表中 Mysql似乎走错了路: 例如,以下各项: C:\xampp\htdocs\site/uploads/temp/1620203716052941000/ck_address_change.csv 返回此错误: C:\xampp\mysql\data\xampphtdocsite\uploads\temp\1620203716052941000\ck\u address\u change.c

我正在尝试使用LOAD DATA INFILE将CSV的zip文件(从我的数据库导出)上载到mysql表中

Mysql似乎走错了路:

例如,以下各项:

C:\xampp\htdocs\site/uploads/temp/1620203716052941000/ck_address_change.csv

返回此错误: C:\xampp\mysql\data\xampphtdocsite\uploads\temp\1620203716052941000\ck\u address\u change.csv 未找到(错误代码:2“无此类文件或目录”)

如何为此正确设置路径?或者这是我的本地服务器上的问题


注意,这只是为了在我的本地服务器上测试使用,因此没有安全问题等。

工作代码-将路径中的前斜杠替换为反斜杠

//Get file and create directory
$file = $_FILES['import_zip']['tmp_name'];
$rand = preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', microtime()); //random folder name as will be deleted later
mkdir(dirname(__DIR__).'/files/temp/'.$rand, 0777);
$path = dirname(__DIR__).'/files/temp/'.$rand;

//Open Zip
$zip = new ZipArchive;
$res = $zip->open($file);
if($res === TRUE) {
    $zip->extractTo($path);
    $zip->close();  
} 

//Loop files
$files = array_diff(scandir($path), array('.', '..'));  
foreach($files as $file){
    $table_name = rtrim($file,'.csv');
    $upload = $path.'\\'.$file;
    $upload = str_replace('/','\\', $upload);
    $upload = str_replace('\\', '\\\\', $upload);
    $q = "LOAD DATA INFILE '$upload' INTO TABLE $table_name";
    $results = mysqli_query($db,$q) or die(mysqli_error($db));
    if(!$results) {
        printf("Error message: %s\n", mysqli_error($db));     
    }   

}

//Remove Directory
array_map('unlink', glob("$path/*.*"));
rmdir($path);

似乎很容易从该消息推断mysql希望您将数据保存在
C:\xampp\mysql\data\
下的某个位置,然后提供加载数据命令的相对路径。或者,您可以指定一个绝对路径,我看到您已经尝试过这样做。但是您需要根据命令理解的规则格式化该路径。当使用任何您不熟悉的命令时,在开始编码之前,我总是强烈建议您使用。在这种情况下,请特别注意“输入文件字符集”部分。阅读说明后,如果仍然有问题,请返回。使用
die(mysqli_error($conn))是一个非常糟糕的主意
在您的代码中,因为它可能会泄漏敏感信息。有关更多解释,请参阅本文:@Dharman-谢谢,但正如我所说的,这只是为了测试,所以安全问题不是一个问题。除了安全问题,它仍然不是正确的代码。正确启用MySQLi错误报告
//Get file and create directory
$file = $_FILES['import_zip']['tmp_name'];
$rand = preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', microtime()); //random folder name as will be deleted later
mkdir(dirname(__DIR__).'/files/temp/'.$rand, 0777);
$path = dirname(__DIR__).'/files/temp/'.$rand;

//Open Zip
$zip = new ZipArchive;
$res = $zip->open($file);
if($res === TRUE) {
    $zip->extractTo($path);
    $zip->close();  
} 

//Loop files
$files = array_diff(scandir($path), array('.', '..'));  
foreach($files as $file){
    $table_name = rtrim($file,'.csv');
    $upload = $path.'\\'.$file;
    $upload = str_replace('/','\\', $upload);
    $upload = str_replace('\\', '\\\\', $upload);
    $q = "LOAD DATA INFILE '$upload' INTO TABLE $table_name";
    $results = mysqli_query($db,$q) or die(mysqli_error($db));
    if(!$results) {
        printf("Error message: %s\n", mysqli_error($db));     
    }   

}

//Remove Directory
array_map('unlink', glob("$path/*.*"));
rmdir($path);