関数を使用して CSV データを MySQL データベースにインポートしようとしていfgetcsv
ます。
if(isset($_POST['submit'])) {
$fname = $_FILES['sel_file']['name'];
$var = 'Invalid File';
$chk_ext = explode(".",$fname);
if(strtolower($chk_ext[1]) == "csv") {
$filename = $_FILES['sel_file']['tmp_name'];
$handle = fopen($filename, "r");
$res = mysql_query("SELECT * FROM vpireport");
$rows = mysql_num_rows($res);
if($rows>=0) {
mysql_query("DELETE FROM vpireport") or die(mysql_error());
for($i =1;($data = fgetcsv($handle, 10000, ",")) !== FALSE; $i++) {
if($i==1)
continue;
$sql = "INSERT into vpireport
(item_code,
company_id,
purchase,
purchase_value)
values
(".$data[0].",
".$data[1].",
".$data[2].",
".$data[3].")";
//echo "$sql";
mysql_query($sql) or die(mysql_error());
}
}
fclose($handle);
?>
<script language="javascript">
alert("Successfully Imported!");
</script>
<?
}
問題は、インポート プロセスの間にスタックし、次のエラーが表示されることです。
SQL 構文にエラーがあります。1 行目の 'S',0,0)' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
ファイルは毎回部分的にのみインポートされます。10000 行のファイルのうち、200 ~ 300 行のみがインポートされます。
これが私のテーブルのDDLです:
create table vpireport (
id int not null auto_increment,
item_code int,
company_id int,
purchase double,
primary key(id),
foreign key(company_id) references users(userid)
);
これまでのところ問題を見つけることができませんでした。ありがとう。