gpt4 book ai didi

php - 用于解析输入到数据库中的 CSV 文件的嵌套 php 循环 - SQL 插入语句在任意周期失败

转载 作者:行者123 更新时间:2023-11-29 20:03:56 25 4
gpt4 key购买 nike

我正在编写的函数存在问题,我需要一个大的 csv 文件并将其输入到二维数组中。

csv 文件是从包含各种记录的数据库表中导出的,

以下是该函数执行的步骤:

//A. get temporary file path
//B. place file into array as a long string
//C. parse string into array based on rows (\r)
//D. parse row strings into arrays for columns (,)


//1. Query db for price codes
//1.1 Loop through CSV top row to find price code x axis position
//2. Loop through price codes SQL
//2.1 Loop through price codes column from CSV file
//2.1.1 IF match price code
//2.1.2 Check if id match on price list array
//2.1.3 Add record to prices table
//Success
//Failure (this could kill the loop maybe)
//3. Close loops and close sql connection

价格代码是与价格适用的地理区域相关的代码。

该函数循环遍历数据库中的所有价格代码

在价格代码循环中,子循环会筛选 csv 数组,查找价格代码与当前循环匹配的记录。

找到匹配项后,输入数据库

代码如下: Click for code

我在循环的每一步输出调试文本,以查看一切是否成功执行。

循环正确执行 - 但是由于某些未知原因,在某个点之后 mysqli 查询不会向数据库添加更多记录。

怎么会发生这种事?即使它没有给出错误,并且输出到页面的 SQL 查询字符串看起来完好无损。

最佳答案

考虑运行纯 SQL,将所有数据片段、csv_arrayonPriceList 上传到 MySQL 临时表(如果定期更改,则定期清理)并运行一个 SQL 查询,避免嵌套 foreach 循环和 if 逻辑。

您可以使用LOAD DATA INFILE(或使用 PHP 迭代插入)一次调用轻松将 csv 数据上传到 MySQL:

LOAD DATA INFILE '/path/to/csv/file.csv' 
INTO TABLE csvdata
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';

然后,运行一个简单的附加查询(如下调整以与实际表和字段名称对齐,因为屏幕截图未显示):

INSERT INTO prices (PriceCode, SellingPrice, StockCode)
SELECT c.priceCodePosition, c.pricePosition, c.model_idPosition
FROM csvdata c
INNER JOIN pricecodes p
ON c.model_idPosition = p.Code
WHERE c.model_idPosition IN (SELECT p.prices FROM onPriceList)
<小时/>

如果您需要捕获与逻辑不匹配的记录(正如您需要使用 echo 语句一样),请运行对立语句(这将是未附加的记录):

SELECT c.priceCodePosition, c.pricePosition, c.model_idPosition
FROM csvdata c
LEFT JOIN pricecodes p
ON c.model_idPosition = p.Code
WHERE c.model_idPosition IS NULL
OR c.model_idPosition NOT IN (SELECT p.prices FROM onPriceList)

关于php - 用于解析输入到数据库中的 CSV 文件的嵌套 php 循环 - SQL 插入语句在任意周期失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40412084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com