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

Форум MySQL

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

 

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

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

тема: Excel>PHP
 
 автор: gwest   (15.08.2005 в 14:42)   письмо автору
 
 

Помогите пожалуйста...
Нужно данные из 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

Как сделать что бы не было точки с запятой

   
 
 автор: P@Sol   (15.08.2005 в 14:50)   письмо автору
 
   для: gwest   (15.08.2005 в 14:42)
 

а вы не опечатались? в этом коде нет добавления ";"

   
 
 автор: Gwest   (15.08.2005 в 14:54)   письмо автору
 
   для: 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 или нет?

   
 
 автор: P@Sol   (15.08.2005 в 15:12)   письмо автору
 
   для: Gwest   (15.08.2005 в 14:54)
 

точно:)

// Разбиваем строку по точке с запятой
$number = explode(";",$line);

   
 
 автор: Gwest   (15.08.2005 в 15:20)   письмо автору
 
   для: 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 )
&Icirc;&oslash;&egrave;&aacute;&ecirc;&agrave; - 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

   
 
 автор: korwin   (15.08.2005 в 17:28)   письмо автору
 
   для: Gwest   (15.08.2005 в 15:20)
 

Попробуйте вставляемые значения заключать кавычки

   
 
 автор: gwest   (16.08.2005 в 12:07)   письмо автору
 
   для: korwin   (15.08.2005 в 17:28)
 

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

   
 
 автор: Gwest   (16.08.2005 в 15:32)   письмо автору
 
   для: gwest   (16.08.2005 в 12:07)
 

В браузер выводит нормально без пробелов, а если вытаскивать данные с условием

where id_cat=70

То данные введеные вручную показываются, а те что были занесены скриптом НЕТ....
id_cat это и есть тот столбец который в базе содержит пробелы...
Что за...?

   
 
 автор: cheops   (16.08.2005 в 15:41)   письмо автору
 
   для: gwest   (16.08.2005 в 12:07)
 

Попробуйте пропустить вставляемые значения через функцию trim() - она отсекает лишние пробелы с начала и конца строки.
<?php
  $text 
trim($text);
?>

   
Rambler's Top100
вверх

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