[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача данных через .txt
RuslanMRP
Привет! Ребята подскажите пожалуйста! загружаю данные в БД MySQL через .txt, выдает ошибку:

Ошибка - 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 'КИТАЙ","Втулки стабилизатора" ),(133,"Втулка стабилизатора","7M0511413A","1.jpg' at line 130


(У Вас есть ошибка в Вашем синтаксисе SQL; проверьте руководство, которое соответствует Вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом) - что это значит.

при передачи через .txt - могут ли данные содержать (. , / - : ;)? - может в этом проблема?



Спустя 8 минут, 50 секунд (22.12.2010 - 11:37) kovaldm написал(а):
Запрос покажи.

Спустя 4 минуты, 48 секунд (22.12.2010 - 11:41) RuslanMRP написал(а):
<?php 
// Устанавливаем соединение с базой данных
include "opt.php";
// Помещаем содержимое файла в массив $arr
// Одна строка файла - один элемент массива

$arr = file("text.txt");
// В цикле производим разбор каждой строки
// формируем многострочный INSERT-запрос

$sql = "INSERT INTO PRICELIST VALUES ";
$i = 1;
foreach($arr as $line)
{
// Разбиваем строку по запятой
$number = explode(",",$line);
// Уничтожаем последний элмемент с комментарием
unset($number[13]);
// Формируем строку многострочного 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();

}
else {echo "БД загружена успешно!";}
?>

Спустя 2 минуты, 51 секунда (22.12.2010 - 11:44) kovaldm написал(а):
Все что попадает в запрос из файла обрабатывай функцией mysql_real_escape_string().

Спустя 5 минут, 4 секунды (22.12.2010 - 11:49) RuslanMRP написал(а):
как это сделать? помогите пожалуйста!

Спустя 3 минуты, 30 секунд (22.12.2010 - 11:53) kovaldm написал(а):
Куда у тебя попадает содержимое файла знаешь?

Спустя 2 минуты, 3 секунды (22.12.2010 - 11:55) divine266 написал(а):
вот так попробуй)
$order = mysql_real_escape_string(substr($order,0,strlen($order) - 1)."))"; 

Спустя 4 минуты, 12 секунд (22.12.2010 - 11:59) RuslanMRP написал(а):
вот передача :

INSERT INTO PRICELIST VALUES (1,\"Опора шаровая нижняя\",\"J15008\",\"1.jpg\",\"30 000\",\"шт\",\"Опора шаровая нижняя J15008 Опора шаровая нижн MITSUBISHI: CARISMA 95-, COLT 88-, ECLIPSE 90-, GALANT 88-\",\"ПОЛЬША\",\"\"\r\n),(2,\"Тяга стабилизатора передняя\",\"J65009\",\"1.jpg\",\"30 000\",\"шт\",\"Тяга стабилизатора передняя J65009 Тяга стабилизатора передн MITSUBISHI: CARISMA 95-\",\"ПОЛЬША\",\"\"\r\n), ...............



Вот ошибка:

Ошибка - 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 '\"Опора шаровая нижняя\",\"J15008\",\"1.jpg\",\"30 000\",\"шт\",\"Опора шаровая ' at line 1

Спустя 25 секунд (22.12.2010 - 11:59) kovaldm написал(а):
divine266
Ага - и обработаются все символы, которые обрабатывать не нужно.

Спустя 42 секунды (22.12.2010 - 12:00) divine266 написал(а):
я исправил уже..заметил свою ошибку, оп или опять не правильно

Спустя 1 минута, 25 секунд (22.12.2010 - 12:02) kovaldm написал(а):
RuslanMRP
Я же дал наводку, куда смотреть.

Спустя 21 секунда (22.12.2010 - 12:02) RuslanMRP написал(а):
kovaldm

Подскажи как? пожалуйста!

Спустя 1 минута, 14 секунд (22.12.2010 - 12:03) RuslanMRP написал(а):
вот это?

 $order = substr($order,0,strlen($order) - 1).")"; 

Спустя 52 секунды (22.12.2010 - 12:04) divine266 написал(а):
$order = mysql_real_escape_string(substr($order,0,strlen($order) - 1)).")"; 

ты так пробовал? или как я первый раз писал?

Спустя 4 минуты, 22 секунды (22.12.2010 - 12:08) RuslanMRP написал(а):
divine266


на первое твое - я написал ошибки выше.


сейчас написал как ты сказал:

<?php 
// Устанавливаем соединение с базой данных
include "opt.php";
// Помещаем содержимое файла в массив $arr
// Одна строка файла - один элемент массива

$arr = file("text.txt");
// В цикле производим разбор каждой строки
// формируем многострочный INSERT-запрос

$sql = "INSERT INTO PRICELIST VALUES ";
$i = 1;
foreach($arr as $line)
{
// Разбиваем строку по запятой
$number = explode(",",$line);
// Уничтожаем последний элмемент с комментарием
unset($number[13]);
// Формируем строку многострочного INSERT (1,2,...,10)
$order = "($i,";
foreach($number as $num)
{
$order .= "$num,";
}
// Удаляем последнюю лишнюю запятую и
// добавляем закрывающую скобку

$order = mysql_real_escape_string(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();

}
else {echo "БД загружена успешно!";}
?>



ошибка:


Ошибка - 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 '\"Опора шаровая нижняя\",\"J15008\",\"1.jpg\",\"30 000\",\"шт\",\"Опора шаровая ' at line 1

Спустя 18 секунд (22.12.2010 - 12:09) kovaldm написал(а):
Все гораздо проще.

medvejya_usluga.php:
$arr = file("text.txt"); 
$arr = array_map("mysql_real_escape_string", $arr);
...

Спустя 11 минут, 12 секунд (22.12.2010 - 12:20) RuslanMRP написал(а):
kovaldm

Вставил, бьът туже ошибку!
<?php 
// Устанавливаем соединение с базой данных
include "opt.php";
// Помещаем содержимое файла в массив $arr
// Одна строка файла - один элемент массива

$arr = file("text.txt");
$arr = array_map("mysql_real_escape_string", $arr);
// В цикле производим разбор каждой строки
// формируем многострочный INSERT-запрос

$sql = "INSERT INTO PRICELIST VALUES ";
$i = 1;
foreach($arr as $line)
{
// Разбиваем строку по запятой
$number = explode(",",$line);
// Уничтожаем последний элмемент с комментарием
unset($number[13]);
// Формируем строку многострочного 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();

}
else {echo "БД загружена успешно!";}
?>

Спустя 6 минут, 34 секунды (22.12.2010 - 12:26) kovaldm написал(а):
Выведи на экран запрос.
// добавляем закрывающую скобку 
echo $sql;

Спустя 19 минут, 32 секунды (22.12.2010 - 12:46) RuslanMRP написал(а):
INTO PRICELIST VALUES (1,\"Опора шаровая нижняя\",\"J15008\",\"1.jpg\",\"30 000\",\"шт\",\"Опора шаровая нижняя J15008 Опора шаровая нижн MITSUBISHI: CARISMA 95-, COLT 88-, ECLIPSE 90-, GALANT 88-\",\"ПОЛЬША\",\"\"\r\n),(2,\"Тяга стабилизатора передняя\",\"J65009\",\"1.jpg\",\"30 000\",\"шт\",\"Тяга стабилизатора передняя J65009 Тяга стабилизатора передн MITSUBISHI: CARISMA 95-\",\"ПОЛЬША\",\"\"\r\n),............

Спустя 16 минут, 41 секунда (22.12.2010 - 13:03) kovaldm написал(а):
PRICELIST VALUES

Здесь чего-то не хватает.

Вот это нужно заключить в апострофы - остальное аналогично.
\"Опора шаровая нижняя\"

Спустя 1 минута, 44 секунды (22.12.2010 - 13:04) RuslanMRP написал(а):
Вот что у меня в текстовом:


"Опора шаровая нижняя","J15008","1.jpg","30 000","шт","Опора шаровая нижняя J15008 Опора шаровая нижн MITSUBISHI: CARISMA 95-, COLT 88-, ECLIPSE 90-, GALANT 88-","ПОЛЬША",""
"Тяга стабилизатора передняя","J65009","1.jpg","30 000","шт","Тяга стабилизатора передняя J65009 Тяга стабилизатора передн MITSUBISHI: CARISMA 95-","ПОЛЬША",""
"Фильтр воздушный","TA8038","1.jpg","55 000","шт","Фильтр воздушный TA8038 Фильтр воздушный CHEVROLET: Suburban K1500 96-00, Tahoe 96-00 \ GMC: Yukon 96-00","КАНАДА",""
..........

Спустя 14 минут (22.12.2010 - 13:18) kovaldm написал(а):
Если кавычки в базе не нужны, то заменяй их на апострофы.
Укажи в запросе последовательность полей в таблице после ее имени.

Спустя 7 минут, 7 секунд (22.12.2010 - 13:26) RuslanMRP написал(а):
Может это вам поможет в файле у меня где-то около 3000 записей. Если я все передаю - ошибка, если передовать по несколько записей - то все нормально - но это без вашей $arr = array_map("mysql_real_escape_string", $arr);


Если же с вашей, то бъет всегда ошибку

Спустя 3 часа, 12 минут, 31 секунда (22.12.2010 - 16:38) kovaldm написал(а):
Я бы посоветовал разобраться для чего нужна функция mysql_real_escape_string(), тогда будет понятно почему появляется ошибка и как ее избежать.

Спустя 2 минуты, 13 секунд (22.12.2010 - 16:40) RuslanMRP написал(а):
Я уже разобрался! Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.