Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сложности с CSV
 
 автор: andrey215   (07.02.2009 в 15:58)   письмо автору
14.8 Кб
 
 

Помогите пожалуйста разобраться!
Нужно импортировать в MySQL данные из файла CSV. В этом файле есть столбец описания товара в нексолько строк. Для примера в прикреплённый файл включил несколько записей.
При попытке импортирования в БД попадает только первая строка ячейки со множеством строк. Помогите пожалуйста решить эту проблему.
Спасибо!

  Ответить  
 
 автор: ols   (07.02.2009 в 16:54)   письмо автору
 
   для: andrey215   (07.02.2009 в 15:58)
 

[поправлено модератором]

  Ответить  
 
 автор: andrey215   (07.02.2009 в 16:57)   письмо автору
 
   для: ols   (07.02.2009 в 16:54)
 

прошу прощения, вот функция:

function OnloadHSklad()
{
$f=fopen("hsklad.csv","r") or die("Ошибка");
while($data=fgets($f))
{            
    list ($Art,$Type,$Name,$Marka,$Upakovka,$Price,$Valuta,$Ost,$Idsubtype,$Ves,$Strana,$Description)=explode(";",$data);
    $sql = mysql_query("INSERT into HSklad (Idsubtype,Type,Art,Marka,Name,Strana,Description,Ves,Upakovka,Price,Valuta,Ost,Image,Special) values ('".$IdSubtype."', '".$Type."', '".$Art."', '".$Marka."', '".$Name."', '".$Strana."', '".$Description."', '".$Ves."', '".$Upakovka."', '".$Price."', '".$Valuta."', '".$Ost."', '','');");
    if ($sql){echo("Запись произведена успешно");}else{echo("Ошибка");}
}
fclose($f);
}

  Ответить  
 
 автор: ols   (07.02.2009 в 17:37)   письмо автору
 
   для: andrey215   (07.02.2009 в 16:57)
 

перед флагом r, вместо запятой должна стоять точка с запятой.

  Ответить  
 
 автор: sim5   (07.02.2009 в 17:41)   письмо автору
 
   для: ols   (07.02.2009 в 17:37)
 

С чего это вдруг?

  Ответить  
 
 автор: andrey215   (07.02.2009 в 17:47)   письмо автору
 
   для: ols   (07.02.2009 в 17:37)
 

Если вы имейте ввиду поменять запятую на точку с запятой в этом месте
$f=fopen("hsklad.csv","r")

то вы ошибайтесь или я вас не правильно понял!
Суть вопроса не в этом. Вы посоветовали воспользоваться поиском, я уже 3 часа копаюсь в вашем поиске и к сожалению до сих пор ничего подходящего найти не смог. Может быть вы подскажете ссылку на такую же тему, если она уже обсуждалась? Помогите пожалуйста!!!

  Ответить  
 
 автор: sim5   (07.02.2009 в 17:46)   письмо автору
 
   для: andrey215   (07.02.2009 в 16:57)
 

Лучше использовать функцию fgetcsv, сформировать строку для многострочной записи в базу, и сделать один единственный запрос к ней.

  Ответить  
 
 автор: Trianon   (07.02.2009 в 18:01)   письмо автору
 
   для: andrey215   (07.02.2009 в 16:57)
 

Во-первых, у Вас с нарушениями формируется текст SQL-оператора, потому что Вы не применяете функцию mysql_escape_string() при формировании текстовых констант в теле оператора.
Во-вторых, если Вы сами знаете, что файл, который Вы пытаетесь прочесть, содержит многострочные значения, то зачем же пытаться читать его построчно, как текст?
Такой подход только разрушит структуру csv.
Кроме как fgetcsv() Вы его врядли чем прочтете.

  Ответить  
 
 автор: andrey215   (07.02.2009 в 18:30)   письмо автору
 
   для: Trianon   (07.02.2009 в 18:01)
 

Огромное всем спасибо за советы, всё переделаю и напишу результат.

  Ответить  
 
 автор: andrey215   (07.02.2009 в 20:18)   письмо автору
 
   для: Trianon   (07.02.2009 в 18:01)
 

Всё получилось, огромное спасибо! =)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования