【发布时间】:2021-07-20 23:09:04
【问题描述】:
我已读入一个 CSV 文件,其中包含超过 4000 行的配方数据。索引 7 是诸如“早餐”、“素食主义者”等类别。我将在 MySQL 中在食谱及其类别之间创建多对多表,但首先我为类别表生成 INSERT 语句。我需要删除重复值(其中有很多),并使用array_unique() 成功完成了这项工作。
我正在生成插入语句,而不是直接将数据放入我的数据库,因为我仍然不确定自己在做什么。
这是我的代码:
<?php
include("connection.php");
$file = "recipes.csv";
$categories = array();
if (file_exists($file)) {
$filepath = fopen($file, "r");
while( ($line = fgetcsv($filepath)) !== FALSE ){
$categories[] = $line[7];
$categories = array_unique($categories);
$catstr = implode(" , ",$categories);
echo "INSERT INTO category (categoryname) VALUES ('".$catstr."')";
echo "<br>";
}
}
我不确定是否使用 implode 函数,也许我用错了。
这是输出:
INSERT INTO category (categoryname) VALUES ('European , Dessert')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin , Meat')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin , Meat , Sauces')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin , Meat , Sauces , Low Protein')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin , Meat , Sauces , Low Protein , < 15 Mins')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin , Meat , Sauces , Low Protein , < 15 Mins')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin , Meat , Sauces , Low Protein , < 15 Mins')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin , Meat , Sauces , Low Protein , < 15 Mins , Cheesecake')
INSERT INTO category (categoryname) VALUES ('European , Dessert , < 30 Mins , Steak , Chicken Breast , Lunch/Snacks , Breakfast , Candy , Ice Cream , Chicken , Gelatin , Meat , Sauces , Low Protein , < 15 Mins , Cheesecake')
....等等。
我的代码显然会为每个原始索引值输出一些内容,并在每次迭代时输出所有先前的类别值。
我需要它做什么:
INSERT INTO category (categoryname) VALUES ('European')
INSERT INTO category (categoryname) VALUES ('Dessert')
INSERT INTO category (categoryname) VALUES ('< 30 Mins')
INSERT INTO category (categoryname) VALUES ('Steak')
INSERT INTO category (categoryname) VALUES ('Chicken Breast')
INSERT INTO category (categoryname) VALUES ('Lunch/Snacks')
INSERT INTO category (categoryname) VALUES ('Breakfast')
etc
任何帮助将不胜感激。
【问题讨论】:
-
为什么不分享文件的摘录(例如前 5 行、中间 5 行和最后 5 行)
标签: php mysql arrays csv while-loop