do you by chance happen to have a delimiter within a delimiter in your file such as
situation) ,"sometext"some more text"and even more text",
in your csv files this causes bad column count
fgetcsv uses double quotes by default as string enclosures so if
you have any double qoutes or the like in your data it causes
havec I realize your using tabs as delimns so just sub tabs for
commas in examples above
fgetcsv splits the array before the call to mysql_escape...... so......
this will work regardless of the number of columns
unless you run into the above situation
Note: mysql_escape_string() has been deprecated since PHP 4.3.0. Do not use this function. Use mysql_real_escape_string()
or addslashes() instead.
// Add your db connection info here
$uploadfile = "full_path_to_your_file";
$table = "your_table_name";
$row = 1;
$handle = fopen($uploadFile, "r");
while ( ($data = fgetcsv($handle, filesize($uploadFile)+1, "\t")) != FALSE ) {
$num = count($data);
if($row == 1){
$fields = " `id` , ";
for($i=0; $i<$num; $i++){
$fields .= "`" . addslashes(trim($data[$i])) . "` , ";
}
$f = substr($fields, 0, -1);
$f = substr($f, 0, -1);
$row++;
}else{
$values = " '' , ";
for($i=0; $i<$num; $i++){
$values .= "'" . addslashes(trim($data[$i])) . "' , ";
}
$v = substr($values, 0, -1);
$v = substr($v, 0, -1);
$sql = "INSERT INTO $table ( $f ) VALUES ( $v )";
mysql_query($sql) or die(print "Upload complete some entries may not have been loaded successfully!");
$values = '';
$row++;
}
}
fclose($handle);