这段代码到底哪有问题啊error_reporting(0);//导入CSV格式的文件 $db = create_peardb_handle();
$fname = $_FILES['MyFile']['name'];
$handle=fopen("$fname","r");
$subHotel_d=$db->query("delete from hotel_activities_2");
$q="insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values (";
while($data=fgetcsv($handle,1000," "))
{
$num = count ($data);
   for ($c=0; $c < $num; $c++) {
       if($c==$num-1){$q=$q.$data[$c];break;}
       $q=$q.$data[$c];
   }
echo $q;
exit();
/*print_r($data);
exit();
$q=$db->query("insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values ('$data[0]','$data[1]','$data[2]','$data[3]'","'$data[4]'");*/
}
$db->query($q);
echo "SQL语句执行成功!<br>";
$q="insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values (";
fclose($handle);
$tpl->display("hotel_admin/subHotel_import.htm");

解决方案 »

  1.   

    你在$db->query($q);前面echo $q;看看,感觉你$q字符串的编排有问题
      

  2.   

    如果没看错的话,insert插入多条记录的时候value值应该是多个括号组合的,而你的$q好像根本没加括号
      

  3.   


    输出的是insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values 
    这个,可我在里面输出的时候是
    insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values (6916,2010-1-5,2010-12-31,中心(2.5公里),上海(2.5 公里),时间:时间:07:45(第一班);08:10(第二班),时间:16:30(第一班);17:00(第二班),7,,,
      

  4.   


    我要导入的是excel格式的csv
      

  5.   

    你将中间的语句改成我这样的试试$q="insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values ";
    while($data=fgetcsv($handle,1000," "))
    {
        $num = count ($data);
        $q .= "(";
       for ($c=0; $c < $num; $c++) {
           if($c==$num-1){$q=$q.$data[$c];break;}
           $q=$q."'".$data[$c]."'";
       }    
       $q .="),";
    }
    $q = substr($q,0,-1);
      

  6.   


    string要加引号insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values (6916,'2010-1-5','2010-12-31','中心(2.5公里)...')
      

  7.   

    报错
    Warning: Unknown: GC cache entry '/var/www/etpass/app/config/config.php' (dev=26633 ino=533018) was on gc-list for 3713 seconds in Unknown on line 0Warning: Cannot modify header information - headers already sent in /var/www/2009/app/include/etpass.include.php on line 41
      

  8.   

    前面的字符串连接的时候我漏了个逗号$q="insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values ";
    while($data=fgetcsv($handle,1000," "))
    {
        $num = count ($data);
        $q .= "(";
       for ($c=0; $c < $num; $c++) {
           if($c==$num-1){$q=$q.$data[$c];break;}
           $q=$q."'".$data[$c]."',";
       }    
       $q = substr($q,0,-1);
       $q .="),";
    }
    $q = substr($q,0,-1);
    最主要还是你把最终的$q打印出来看看SQL语句是否正确
      

  9.   

    我要添加的excel(csv)是这样格式的
    A                    B                   C               D        E
    6916 2010-1-5    2010-12-31    abc 7
    11728 2010-4-1    2010-12-31    abc 14
    11726 2010-4-1    2010-12-31    abc 14
    11732 2010-4-1    2010-12-31    abc 14
    但是数据库中共有6个字段
      

  10.   


    SQL输出是这样, insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values
      

  11.   

    应该是这样的吧
    insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values('6916','2010-1-5','2010-12-31','abc','7'),('11728','2010-1-5','2010-12-31','abc','14'),.....
      

  12.   

    没有必要这么写 啊,你用implode()直接把数组转化成字符串就可以啊。再就是你没有加“,”啊