将Csv导入数据库

时间:2016-03-14 12:01:30

标签: php mysql

我有这个代码,当我只导入三个字段时效果很好,但是当我尝试导入超过3个字段时,它不起作用。

mysql_query("INSERT INTO forms (id, created_time, ad_id, ad_name, adset_id, adset_name, campaign_id, campaign_name, form_id, is_organic, specialist, full_name, email, city, country, date_of_birth, phone_number) VALUES 
                ( 
                    '".addslashes($data[0])."', 
                    '".addslashes($data[1])."', 
                    '".addslashes($data[2])."', 
                    '".addslashes($data[3])."', 
                    '".addslashes($data[4])."', 
                    '".addslashes($data[5])."', 
                    '".addslashes($data[6])."', 
                    '".addslashes($data[7])."', 
                    '".addslashes($data[8])."', 
                    '".addslashes($data[9])."', 
                    '".addslashes($data[10])."', 
                    '".addslashes($data[11])."', 
                    '".addslashes($data[12])."', 
                    '".addslashes($data[13])."', 
                    '".addslashes($data[14])."', 
                    '".addslashes($data[15])."', 
                    '".addslashes($data[16])."', 
                    '".addslashes($data[17])."' 
                ) 
            "); 
        } 
    } while ($data = fgetcsv($handle,1000,",","'")); 

2 个答案:

答案 0 :(得分:0)

试试这项工作

while ($data = fgetcsv($handle, 1000, ","));

而不是

while ($data = fgetcsv($handle,1000,",","'")); 

答案 1 :(得分:0)

此代码中addslashes()做了什么?在与数据库交谈时,您只需要逃脱一件事,那就是单引号(请参阅mysql_real_escape_string(),mysqli_real_escape_string()等){} {}}用于生成html,因此它会对您的数据进行涂写当你为时已晚的时候你会注意到的方式。既然我们在上面,你也不应该使用久已过时的addslashes函数。你没有在mysql_query()的文件中看到大红色(好的粉红色)警告吗?使用mysql_*,如果不使用面向对象的样式,则几乎不同。第三,你应该使用“准备好的查询”,而不是自己构建字符串。这样更安全。有关示例,请参阅here

所以,最后你的问题。要从许多数组元素构建一个长字符串,您可以使用循环依次追加每个元素。但更好的方法是使用mysqli:它将数组元素组合成一个字符串,并选择连接字符串。

implode