|
|
|
| Помогите пожалуйста...
Нужно данные из file.csv вставить в таблицу...
На форуме нашел вот этот код...
<?
// Устанавливаем соединение с базой данных
include "config.php";
// Помещаем содержимое файла в массив $arr
// Одна строка файла - один элемент массива
$arr = file("file.csv");
// В цикле производим разбор каждой строки
// формируем многострочный INSERT-запрос
$sql = "INSERT INTO test VALUES ";
$i = 1;
foreach($arr as $line)
{
// Разбиваем строку по запятой
$number = explode(",",$line);
// Формируем строку многострочного INSERT (1,2,...,10)
$order = "($i,";
foreach($number as $num)
{
$order .= "$num,";
}
// Удаляем последнюю лишнюю запятую и
// добавляем закрывающую скобку
$order = substr($order,0,strlen($order) - 1).")";
$sql .= "$order,";
$i++;
}
// Удаляем последнюю лишнюю запятую и
// добавляем закрывающую скобку
$sql = substr($sql,0,strlen($sql) - 1);
// Выполняем SQL-запрос
if(!mysql_query($sql))
{
echo $sql."<br>";
echo "Ошибка - ".mysql_error();
}
?>
Выдает ошибку:
INSERT INTO product VALUES (1,121134;Sicro Nokia;1;1;sicro.jpg;70 )... You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ';Sicro Nokia;1;1;sicro.jpg;70 ),(2,121135;Sicro Motorola;1;1;s
Как сделать что бы не было точки с запятой | |
|
|
|
|
|
|
|
для: gwest
(15.08.2005 в 14:42)
| | а вы не опечатались? в этом коде нет добавления ";" | |
|
|
|
|
|
|
|
для: P@Sol
(15.08.2005 в 14:50)
| | Да нет все как есть...
<?
// Устанавливаем соединение с базой данных
include "config.php";
// Помещаем содержимое файла в массив $arr
// Одна строка файла - один элемент массива
$arr = file("file.csv");
// В цикле производим разбор каждой строки
// формируем многострочный INSERT-запрос
$sql = "INSERT INTO test VALUES ";
$i = 1;
foreach($arr as $line)
{
// Разбиваем строку по запятой
$number = explode(",",$line);
// Формируем строку многострочного INSERT (1,2,...,10)
$order = "($i,";
foreach($number as $num)
{
$order .= "$num,";
}
// Удаляем последнюю лишнюю запятую и
// добавляем закрывающую скобку
$order = substr($order,0,strlen($order) - 1).")";
$sql .= "$order,";
$i++;
}
// Удаляем последнюю лишнюю запятую и
// добавляем закрывающую скобку
$sql = substr($sql,0,strlen($sql) - 1);
// Выполняем SQL-запрос
if(!mysql_query($sql))
{
echo $sql."<br>";
echo "Ошибка - ".mysql_error();
}
?>
|
Скопировал прямо из файла
А может это из-за того что формат csv или нет? | |
|
|
|
|
|
|
|
для: Gwest
(15.08.2005 в 14:54)
| | точно:)
// Разбиваем строку по точке с запятой
$number = explode(";",$line); | |
|
|
|
|
|
|
|
для: P@Sol
(15.08.2005 в 15:12)
| | Всеравно таже ошибка видимо ето не из-за точки запятой.
INSERT INTO test VALUES (1,121134,Sicro Nokia,1,1,sicro.jpg,70 ),(2,121135,Sicro Motorola,1,1,sicro.jpg,70 ),(3,121136,Sicro Samsung,1,1,sicro.jpg,70 ),(4,121137,Sicro Siemens,1,1,sicro.jpg,70 ),(5,121138,Sicro Sony,1,1,sicro.jpg,70 )
Îøèáêà - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Nokia,1,1,sicro.jpg,70 ),(2,121135,Sicro Motorola,1,1,sicro.jp
|
| |
|
|
|
|
|
|
|
для: Gwest
(15.08.2005 в 15:20)
| | Попробуйте вставляемые значения заключать кавычки | |
|
|
|
|
|
|
|
для: korwin
(15.08.2005 в 17:28)
| | Спасибо заработало, но вот только как то не правильно
В базе последний столбец почемуто слишком длинный хотя там всего два символа... такое ощущение что там лишние пробелы?
Если вводить вручную или через браузер то все нормально, | |
|
|
|
|
|
|
|
для: gwest
(16.08.2005 в 12:07)
| | В браузер выводит нормально без пробелов, а если вытаскивать данные с условием
То данные введеные вручную показываются, а те что были занесены скриптом НЕТ....
id_cat это и есть тот столбец который в базе содержит пробелы...
Что за...? | |
|
|
|
|
|
|
|
для: gwest
(16.08.2005 в 12:07)
| | Попробуйте пропустить вставляемые значения через функцию trim() - она отсекает лишние пробелы с начала и конца строки.
<?php
$text = trim($text);
?>
|
| |
|
|
|