Bien aqui os dejo el codigo explicado, por si os sirve de algo, y haber si podeis decirme, si el error es del php o es un error del csv.
gracias de antemano.
Código PHP:
<?php
// declaramos la conexion
mysql_connect('localhost','root','');
mysql_select_db("gomila");
$row = 1;
//abrimos el archivo donde esta el csv
$fp = fopen ("http://localhost/gomila/admin/csv/bbdd.csv","r");
while ($data = fgetcsv ($fp, 1000, ";")) {
$num = count ($data);
$row++;
for ($c=0; $c<$num; $c++) {
//esto remplaza los numeros que se encuentran separados por , los cambia por .
$data[$c]= ereg_replace("(.+)\,(.+)", "\\1.\\2", $data[$c]);}
//aqui miramos el catalogo y comprobamos los registros para que no se dupliquen
$qr=mysql_query ("select * from catalogo");
while ($cl = mysql_fetch_row($qr))
if ($cl[1]==$data[1]) {echo "$cl[1]";}
else {mysql_query("insert into catalogo SET publisher='$data[0]', id='$data[1]', producto='$data[2]', title2='$data[3]', title3='$data[4]', autor='$data[5]', precio='$data[6]', date='$data[7]', subject='$data[8]', pages='$data[9]', mod_date='$data[10]', descripcion='$data[11]', oferta='$data[12]', novedad='$data[13]', imagen='$data[14]'");
}
print "<br><br>";}
fclose ($fp);?>