gpt4 book ai didi

php - 使用 PHP 脚本将 CSV 上传到 MySQL。问题

转载 作者:行者123 更新时间:2023-11-29 13:47:41 24 4
gpt4 key购买 nike

我在运行 PHP 脚本时遇到了一些问题。

我想要实现的目标:在子页面上,我想要一个非常简单的 CSV 文件上传到 MySQL 数据库。它需要删除或截断表,并根据之前的解决方案创建或插入此 CSV 文件中的一些数据。

我现在的问题是:我是 PHP 和 MySQL 的初学者,因此很难弄清楚为什么我的脚本不起作用。

我的代码:

PHP:

$connect = mysql_connect("host","user","pass");  
mysql_select_db("database",$connect); //select the table

if ($_FILES[csv][size] > 0) {

$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");

mysql_query ("
CREATE TABLE IF NOT EXISTS `database`.`table` (
`item_number` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_danish_ci NOT NULL ,
`item_desq` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_danish_ci NOT NULL ,
`item_img_path` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_danish_ci NULL ,
`item_id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ( `item_id` )
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_danish_ci
");

do {
if ($data[0]) {
mysql_query("
INSERT INTO strand_items1 (item_number, item_desq, item_img_path)
VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."
)
");
}
} while ($data = fgetcsv($handle,1000,";","\""));

header('Location: import_old.php?success=1'); die;
}

HTML:

<body>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
Choose your file: <br />
<input name="csv" type="file" id="csv" />
<input type="submit" name="Submit" value="Submit" />
</form>
</body>

CSV:CSV 中的普通行如下所示

"13371337";"Some description of the item";"NULL";

现在,结果:由此,我得到了一个“成功”的流程,但表中没有数据,据我猜测,数据库上存在某种无限循环,因为它创建了越来越多的数量表中只有 item_id 自动递增的空条目。我哪里出错了,有没有简单的方法可以解决这个问题?

这是我在这里提出的第一个问题,我希望我满足所有要求。 (指出我的新手;问题首先发布在meta.stackoverflow.com上;))如果没有,请耐心等待 - 我会密切关注这个问题并快速回答任何回复和请求。

提前谢谢你:)

最佳答案

每次截断你的表格就容易多了。

这是我昨晚为 friend 写的一个基本导入器,它很简单,但你应该明白这个想法。显然,我在这里使用 mysqli,因此您需要更改该位以适合您的情况,并且还必须在顶部添加截断(就在开始导入位之后就可以了。

if (isset($_POST['action']) && $_POST['action']=="beginimport") {
echo "<h4>Starting Import</h4><br />";
// Ignore user abort and expand time limit
//ignore_user_abort(true);
set_time_limit(60);
$result = @move_uploaded_file($_FILES['clientimport']['tmp_name'], getcwd()."/tmp/siccodes.csv");
if(empty($result)){
echo "<span style=\"font-weight:bold;color:red;\">There was an error moving the uploaded file</span><br />";
} else {
echo "<span style=\"font-weight:bold;color:green;\">Temp file created begining data parse<br /><br /></span>";
if (($handle = fopen(getcwd()."/tmp/siccodes.csv", "r")) !== FALSE) {
$row = 0;
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) {
$client = $db->queryUniqueObject("SELECT ClientID FROM tblcreditchecks WHERE RegNumber='".mysqli_real_escape_string($db->mysqli,$data[0])."'",ENABLE_DEBUG);
if ($data[2]>0) {
$db->execute("UPDATE tblcreditchecks SET TurnOver='".mysqli_real_escape_string($db->mysqli,$data[2])."' WHERE RegNumber='".mysqli_real_escape_string($db->mysqli,$data[0])."'",ENABLE_DEBUG);
} else {
echo "Turnover fail - ".$data[0];
}
if ($client->ClientID>0) {
$db->execute("UPDATE tblclients SET SICCodes='".mysqli_real_escape_string($db->mysqli,$data[1])."' WHERE ID=".$client->ClientID,ENABLE_DEBUG);
} else {
echo " SIC fail - ".$data[0];
}

echo " - IMPORTED - ".$data[0]."<br />";
fcflush();
set_time_limit(60); // reset timer on loop
}
}
fclose($handle);
unlink(getcwd()."/tmp/siccodes.csv");
}
echo "COMPLETE";
}

关于php - 使用 PHP 脚本将 CSV 上传到 MySQL。问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17164805/

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