|
 14.8 Кб |
|
| Помогите пожалуйста разобраться!
Нужно импортировать в MySQL данные из файла CSV. В этом файле есть столбец описания товара в нексолько строк. Для примера в прикреплённый файл включил несколько записей.
При попытке импортирования в БД попадает только первая строка ячейки со множеством строк. Помогите пожалуйста решить эту проблему.
Спасибо! | |
|
|
|
|
|
|
|
для: andrey215
(07.02.2009 в 15:58)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: 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);
}
|
| |
|
|
|
|
|
|
|
для: andrey215
(07.02.2009 в 16:57)
| | перед флагом r, вместо запятой должна стоять точка с запятой. | |
|
|
|
|
|
|
|
для: ols
(07.02.2009 в 17:37)
| | С чего это вдруг? | |
|
|
|
|
|
|
|
для: ols
(07.02.2009 в 17:37)
| | Если вы имейте ввиду поменять запятую на точку с запятой в этом месте
$f=fopen("hsklad.csv","r")
|
то вы ошибайтесь или я вас не правильно понял!
Суть вопроса не в этом. Вы посоветовали воспользоваться поиском, я уже 3 часа копаюсь в вашем поиске и к сожалению до сих пор ничего подходящего найти не смог. Может быть вы подскажете ссылку на такую же тему, если она уже обсуждалась? Помогите пожалуйста!!! | |
|
|
|
|
|
|
|
для: andrey215
(07.02.2009 в 16:57)
| | Лучше использовать функцию fgetcsv, сформировать строку для многострочной записи в базу, и сделать один единственный запрос к ней. | |
|
|
|
|
|
|
|
для: andrey215
(07.02.2009 в 16:57)
| | Во-первых, у Вас с нарушениями формируется текст SQL-оператора, потому что Вы не применяете функцию mysql_escape_string() при формировании текстовых констант в теле оператора.
Во-вторых, если Вы сами знаете, что файл, который Вы пытаетесь прочесть, содержит многострочные значения, то зачем же пытаться читать его построчно, как текст?
Такой подход только разрушит структуру csv.
Кроме как fgetcsv() Вы его врядли чем прочтете. | |
|
|
|
|
|
|
|
для: Trianon
(07.02.2009 в 18:01)
| | Огромное всем спасибо за советы, всё переделаю и напишу результат. | |
|
|
|
|
|
|
|
для: Trianon
(07.02.2009 в 18:01)
| | Всё получилось, огромное спасибо! =) | |
|
|
|