问题描述
我有一个PHP脚本,该脚本允许我将CSV文件中的数据插入SQL Server表中。
例如,我在某些行上有
CL2096-CL;CREATURES OF LEASURE;h - Wetsuits;hd - Wetsuits Accessories;9'6" LONGBOARD DOUBLE;ETE 2020
CTEQJ5-RC;RIP CURL;c - Surfwear;ca - Surfwear Men;D'AMS S/S TEE;WINTER 2020/2021
BBBCJ1-RC;RIP CURL;b - Men Accessories;ba - Bags Men;DAY COVER 6'3;ETE 2020
BBBCK1-RC;RIP CURL;b - Men Accessories;ba - Bags Men;DAY COVER 6'7;ETE 2020
BBBCF1-RC;RIP CURL;b - Men Accessories;ba - Bags Men;DAY COVER 6'0;WINTER 2020/2021
我想用文件中的'
替换''
以便能够插入它们。我尝试了str_replace
,但替换无效,我的错误是什么原因造成的?
<?php
include("connexion.php");
$dir = '//macaroni/d$/ftp/Y2/GET/';
$allFiles = scandir($dir);
$dest = '//macaroni/d$/ftp/Y2/GET/COPIES/';
foreach($allFiles as $file) {
if (!in_array($file,array(".","..")))
{
$file = $dir.$file;
$filename = basename( $file );
if ( strpos( $filename,'BI3_' ) === 0 ) {
// truncate table
$query = "truncate table dbo.Y2_Style";
$stmt = $conn->query( $query );
if (($handle = fopen($file,"r")) !== false) {
$str = str_replace("'","''",$file);
// To remove BOM in the fist cell
fseek($handle,3);
while (($data = fgetcsv($handle,9000000,";")) !== false) {
if (empty(array_filter($data))) {
continue;
}
$query = "insert into dbo.Y2_Style (stylecode,brandname,department,category,description,season)
values('" . $data[0] ."','" . $data[1] ."','" . $data[2] ."','" . $data[3] ."','" . $data[5] ."','" . $data[5] ."')";
$stmt = $conn->query( $query );
if (!$stmt) {
$file3 = "D:/xampp/htdocs/retail_BI/errors/erreur_BI3.txt";
file_put_contents($file3,$query . PHP_EOL,FILE_APPEND | LOCK_EX);
}
}
fclose($handle);
//Moving the file to another folder
if(!rename($file,$dest . $filename)) {
echo "error copy";
}
}
}
}
}
echo "good !";
?>
解决方法
尝试一下,让我们知道结果:
$files = glob('../App/*');
foreach($files as $file){
$file_name = explode('/',$file);
$file_name = end($file_name);
if(strpos($file_name,'BI3_') !== 0){
$file_content = file_get_contents($file);
$file_content = str_replace("'","''",$file_content);
$file_content = str_replace("''''",$file_content);
// Your Query
}
}