【发布时间】:2020-12-26 17:20:30
【问题描述】:
我有一个 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 !";
?>
【问题讨论】:
-
您将
str_replace("'", "''", $file)分配给变量$str,而您实际上并未使用该变量。您需要在某处使用$str,因为它包含被替换的内容。
标签: php sql-server csv pdo