希望有人能帮助我解决我认为会是次要的问题(我还在学习......)。我正在尝试将基于 SQL 数据库的 CSV 文件服务器的全部内容写入此处,这是我目前拥有的代码。线路//
out 完美写入并生成新记录。 $ar0
值不会在名为 order 的表中生成任何条目 - 即使 csv 文件长约 100 行,我也只是得到 p>
Error: INSERT INTO order (Picker,Order_Number,Timestamp,System)values ('','','','')
$file = "Pal.ORD.csv";
$tbl = "order";
$f_pointer=fopen("$file","r"); // file pointer
while(! feof($f_pointer)){
$ar=fgetcsv($f_pointer);
//$sql="INSERT INTO `order` (Picker,Order_Number,Timestamp,System)values ('Me','9999','23-01-2015','ORD')";
$sql="INSERT INTO `order` (Picker,Order_Number,Timestamp,System)values ('$ar[0]','$ar[1]','$ar[2]','$ar[3]')";
echo $sql;
echo "<br>";
}
if ($connect->query($sql) === TRUE) {
echo "New records created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
最佳答案
我认为可能发生的情况是您的文件可能有一个空行/回车作为文件的最后一行,并使用它来插入数据作为空白条目。
我不能 100% 确定这一点,因为您没有提供 CSV 文件的样本,但这是我的测试所揭示的。
基于以下 CSV 测试模型:(旁注:空白行将被忽略)
a1,a2,a3,a4
b1,b2,b3,b4
c1,c2,c3,c4
使用以下内容并替换为您自己的凭据。
这将根据我在上面提供的模型为给定文件中找到的每一行创建一个新条目/行。
<?php
$DB_HOST = 'xxx';
$DB_USER = 'xxx';
$DB_PASS = 'xxx';
$DB_NAME = 'xxx';
$db = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($db->connect_errno > 0) {
die('Connection failed [' . $db->connect_error . ']');
}
$file = "Pal.ORD.csv";
$delimiter = ',';
if (($handle = fopen("$file", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
foreach($data as $i => $content) {
$data[$i] = $db->real_escape_string($content);
}
// echo $data[$i].""; // test only not required
$db->query("INSERT INTO `order`
(Picker, Order_Number, Timestamp, System)
VALUES ('" . implode("','", $data) . "');");
}
fclose($handle);
}
if($db){
echo "Success";
}
else {
echo "Error: " . $db->error;
}
关于php - 将 CSV 文件写入 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28121194/