我正在尝试将包含100,000行的大型csv文件导入MySql表。我收到了错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近'Dell','','1610 Keeneland Dr','','Helena','205-871-8006', '','35080-4114')'在第1行
将代码从查询更改为echo:
'428A1B35-6913-497C-907A-BFB9C4983B04','Andrew Collins O'Dell','', '1610 Keeneland Dr','','Helena',''205-871-8006','','35080-4114')
你可以看到有一些额外的引号(2个单一的刻度)和一些字段之间的逗号。我想也许这是一片空旷但没有骰子。这是我的代码:
if (($handle = fopen("accounts.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($handle, ",")) !== FALSE)
{
try
{
mysql_query("INSERT INTO accounts (id, name
,billing_address_street
, billing_address_city, billing_address_state, billing_address_postalcode
, phone_office, phone_alternate
, website) values ('".trim(com_create_Guid(), '{}')
."', '".$data[1]."', '".$data[46]."', '".$data[48]
."', '".$data[49]."', '".$data[50]."', '".$data[8]
."', '".$data[9]."', '".$data[52]."')")or die(mysql_error());
}
catch(MySqlException $e)
{
$e.getMessage();
}
}
fclose($handle);
}
我已经尝试在fgetcsv函数中放入字段机箱参数'“'。我得到了一些未定义的偏移量。我的问题是,是否有人知道额外的刻度和逗号是什么来自
旁注:它插入了250条记录,虽然名称后面的所有内容都是一列或2,这当然是因为额外的刻度和逗号。
答案 0 :(得分:2)
你必须使用这个功能
mysql_real_escape_string( $data[$x], $dblink )
表示数据部分; - )