Столкнулся с совершенно непонятной и фантастической ситуацией:
Скрипт вытаскивает данные, вырезает хтмл код, вставляет данные в переменные и отправляет в БД.
Проверяю перед запросом в БД данные получаю -
$title = 'Subaru ED6,0 230-SLE (ED6.0/230-SLE)';
$desc = 'Мощность, Вт:1.6 кВт квт Напряжение: 220 В Описание: на даче, в походе, на рыбалке и т.п.';
$text = 'Модель Ranger2000 Обозначение Генераторная установка Класс OPEN Напряжение 230В/ 50 Гц Область применения Досуг';
Отправляю в БД а там отображается только $title. Остальные данные не попадают, с чем может быть связана проблема?
Спустя 4 минуты, 31 секунда (31.10.2011 - 23:57) Семён написал(а):
Размер поля и тип поля проверяй.
Спустя 3 минуты, 38 секунд (1.11.2011 - 00:01) gagger написал(а):
desc - varchar(255)
text - text
text - text
Спустя 1 минута, 19 секунд (1.11.2011 - 00:02) Семён написал(а):
А ты в эту одну ячейку это всё суёшь?
Если нет, то показывай как ты INSERT делаешь
Если нет, то показывай как ты INSERT делаешь
Спустя 38 секунд (1.11.2011 - 00:03) caballero написал(а):
распечатай результирующий sql запрос которым вставляешь
и выполни его отдельно или просто посмотри что там
и выполни его отдельно или просто посмотри что там
Спустя 53 секунды (1.11.2011 - 00:03) gagger написал(а):
В desc идет соответственно $desc = 'Мощность, Вт:1.6 кВт квт Напряжение: 220 В Описание: на даче, в походе, на рыбалке и т.п.';
в текст - $text = 'Модель Ranger2000 Обозначение Генераторная установка Класс OPEN Напряжение 230В/ 50 Гц Область применения Досуг';
в текст - $text = 'Модель Ranger2000 Обозначение Генераторная установка Класс OPEN Напряжение 230В/ 50 Гц Область применения Досуг';
Спустя 4 минуты, 11 секунд (1.11.2011 - 00:08) Игорь_Vasinsky написал(а):
а INSERT как выглядит?
Спустя 1 минута, 7 секунд (1.11.2011 - 00:09) gagger написал(а):
INSERT INTO jos_makroprom_vm_product VALUES ('', '1', '', '$prod', 'Мощность, Вт:1.6 кВт квт Напряжение: 220 В Описание: на даче, в походе, на рыбалке и т.п.',
'Модель Ranger2000 Обозначение Генераторная установка Класс OPEN Напряжение 230В/ 50 Гц Область применения Досуг',
'', '', 'Y', '', '', '', '', '', '', '', '', '1318982400', '', '', '', '',
'1319002912', '1319002996', 'Subaru ED6,0 230-SLE (ED6.0/230-SLE)', '', '', '', '', '', '', '', '', '', '')
Вставляю руками в БД все отлично вставлятся
Спустя 1 минута, 49 секунд (1.11.2011 - 00:11) Семён написал(а):
Посмотри пример:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
Спустя 51 секунда (1.11.2011 - 00:11) imbalance_hero написал(а):
gagger
все данные обрабатывай через mysql_real_escape_string
все данные обрабатывай через mysql_real_escape_string
Спустя 15 секунд (1.11.2011 - 00:12) Игорь_Vasinsky написал(а):
а чё пустого так много? для Int кавычки не нужны, id если авто инкремент не указывай...
пустоту наверн можно явно как NULL указать
пустоту наверн можно явно как NULL указать
Спустя 12 минут (1.11.2011 - 00:24) gagger написал(а):
imbalance_hero, спасибо, но не помогло.
Игорь_Vasinsky, навести марафет это в последнюю очередь, пусть сейчас хоть как-то заработает...
Мне не понятно, каким образом УЖЕ полученные данные не ВСЕ попадают в БД, хотя при том условии что я их добавляю руками через sql они отлично туда попадают.
Игорь_Vasinsky, навести марафет это в последнюю очередь, пусть сейчас хоть как-то заработает...
Мне не понятно, каким образом УЖЕ полученные данные не ВСЕ попадают в БД, хотя при том условии что я их добавляю руками через sql они отлично туда попадают.
Спустя 3 минуты, 10 секунд (1.11.2011 - 00:27) gagger написал(а):
<?php
$host='localhost';
$database='macroprom_db';
$user='root';
$pswd='';
$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
$file_handle = fopen('test.txt', 'r');
while (!feof($file_handle)) {
// в тексте могут находиться переносы строк, поэтому если строка заканчивается знаком '\', мы его обрезаем, а строку соединяем со следующей.
$line = $s.fgets($file_handle);
if (substr($line,strlen($line)-3,1)=='\\'){
$s = substr($line,0,strlen($line)-3);
continue;
}else{
$s='';
}
if (!empty($line)){
$data = explode('|',$line);
//echo '<pre>';
//print_r($data);
//echo '</pre>';
//$td = explode('<tbody>',$data[32]);
$price = '<br />Цена:'.$data[31];
//Обрабатываем картинку
$jpg = explode("`",$data[37]);
$pic = $jpg[0].$jpg[1];
$content = $td[0].$td[1].$td[2].$head.$td[3].$td[4].$td[5];
$jpg = explode("`",$data[37]);
if (isset($jpg[1])) {
$pic = 'images/products/'.$jpg[0].'.'.$jpg[1];
}
else $pic ='';
$desc = 'Мощность, Вт:'.$data[27].' квт
Напряжение: '.$data[28].'
Описание: '.$data[30];
//Убиваем HTML
$search = array ("'<script[^>]*?>.*?</script>'si", // Вырезает javaScript
"'<[\/\!]*?[^<>]*?>'si", // Вырезает HTML-теги
"'&(quot|#34);'i", // Заменяет HTML-сущности
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
//"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e"); // интерпретировать как php-код
$replace = array (" ",
" ",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
$text2 = preg_replace($search, $replace, $data[32]);
if (isset($data[32])) {
$desc = mysql_real_escape_string($desc);
$text2 = mysql_real_escape_string ($text2);
$prod++;
mysql_query("SET NAMES 'utf8'");
mysql_query("INSERT INTO jos_makroprom_vm_product VALUES ('','1', '', '$prod', '$desc', '$text2', '$pic', '$pic', 'Y', '', '', '', '', '', '', '', '',
'1318982400', '', '', '', '', '1319002912', '1319002996', '$data[16]', '', '', '', '', '', '', '', '', '', ''); ");
}
}
}
?>
Спустя 1 минута, 59 секунд (1.11.2011 - 00:29) Семён написал(а):
убери эти идиотские:
'', '', '', '', '', '', '', '', '', ''
и воспользуйся примером:
'', '', '', '', '', '', '', '', '', ''
и воспользуйся примером:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
Спустя 4 минуты, 4 секунды (1.11.2011 - 00:33) imbalance_hero написал(а):
INSERT INTO `table` SET
`cell` = 'value',
`cell2`= 'value2'
А вот так вообще понятно
Спустя 13 минут, 41 секунда (1.11.2011 - 00:47) gagger написал(а):
mysql_query ("INSERT INTO `jos_makroprom_vm_product` SET
`vendor_id` = '1',
`product_sku` = '$prod',
`product_s_desc` = '$desc',
`product_desc` = '$text2',
`product_thumb_image` = '$pic',
`product_full_image` = '$pic',
`product_publish` = 'Y',
`product_available_date`= '1318982400',
`cdate`= '1319002912',
`mdate`= '1319002996',
`product_name`= '$data[16]'
");
При таком варианте, вообще ничего не добавляет.
Спустя 1 минута, 44 секунды (1.11.2011 - 00:48) Winston написал(а):
gagger
Еще раз посмотри на то, что тебе Семён показал !
Еще раз посмотри на то, что тебе Семён показал !
Спустя 9 секунд (1.11.2011 - 00:48) Игорь_Vasinsky написал(а):
конкатенвцию используй, mysql_real_escape_string()
допиши к запросу
'".$var."'
допиши к запросу
or die(mysql_error());
Спустя 1 минута, 34 секунды (1.11.2011 - 00:50) Игорь_Vasinsky написал(а):
(ячейки...) VALUES (данные....)
Спустя 11 минут, 31 секунда (1.11.2011 - 01:02) gagger написал(а):
Аналогично не работает
mysql_query ("INSERT INTO jos_makroprom_vm_product (vendor_id, product_sku, product_s_desc, product_desc, product_thumb_image, product_full_image, product_publish, product_available_date, cdate, mdate, product_name)
VALUES ('1', '$prod', '$desc', '$text2',
'$pic', '$pic', 'Y', '1318982400', '1319002912', '1319002996', '$data[16]')") or die("Не удается сделать запрос.");
Спустя 4 минуты, 50 секунд (1.11.2011 - 01:06) Игорь_Vasinsky написал(а):
блин.. я для чего mysql_error() указал? чтоб получить ошибку.
Спустя 10 минут, 31 секунда (1.11.2011 - 01:17) gagger написал(а):
Стер подключение к БД случайно по этому не подключалось к БД
Но проблема осталась прежней
Но проблема осталась прежней
Спустя 26 минут, 7 секунд (1.11.2011 - 01:43) Игорь_Vasinsky написал(а):
гадание на кофейной гуще...
Спустя 1 минута, 21 секунда (1.11.2011 - 01:44) Winston написал(а):
В or die допиши
or die("Не удается сделать запрос." . mysql_error());
Спустя 7 минут, 4 секунды (1.11.2011 - 01:51) gagger написал(а):
Да нету ошибки, проходит запрос, попадает в БД но не ВЕСЬ.
Спустя 5 минут, 20 секунд (1.11.2011 - 01:57) imbalance_hero написал(а):
продублируй запрос mysql_query и второй замени на die();
Выведется полностью текст запроса.
Запрос сделай как я показал, переменные все обрабатывай mysql_real_escape_string, для этого продемонстрируй запрос отдельно тут.
Не забудь указать or die(mysql_error()); !!!
Покажи обе записи из mysql .
Вообщем всё проделай и выложи тут запрос, код запроса, запись в БД (её вид, именно скрин-шот).
Выведется полностью текст запроса.
Запрос сделай как я показал, переменные все обрабатывай mysql_real_escape_string, для этого продемонстрируй запрос отдельно тут.
Не забудь указать or die(mysql_error()); !!!
Покажи обе записи из mysql .
Вообщем всё проделай и выложи тут запрос, код запроса, запись в БД (её вид, именно скрин-шот).
Спустя 11 секунд (1.11.2011 - 01:57) Winston написал(а):
Значит, скорее всего у тебя не все переменные имеют значения (пустые) подставляются
Спустя 10 минут, 46 секунд (1.11.2011 - 02:08) gagger написал(а):
Спустя 33 секунды (1.11.2011 - 02:08) gagger написал(а):
mysql_query("SET NAMES 'utf8'");
mysql_query ("INSERT INTO `jos_makroprom_vm_product` SET
`vendor_id` = '1',
`product_sku` = '$prod',
`product_s_desc` = '$desc',
`product_desc` = '$text2',
`product_thumb_image` = '$pic',
`product_full_image` = '$pic',
`product_publish` = 'Y',
`product_available_date`= '1318982400',
`cdate`= '1319002912',
`mdate`= '1319002996',
`product_name`= '$data[16]'
") or die(mysql_error());
Спустя 24 минуты, 12 секунд (1.11.2011 - 02:32) imbalance_hero написал(а):
gagger
Вот показываешь запрос, где обработка данных?
Второй вариант, вместо mysql_query напиши exit() - увидишь вид своего запроса!!!.
Вот показываешь запрос, где обработка данных?
`product_desc` = '".mysql_real_escape_string($text2)."',
Второй вариант, вместо mysql_query напиши exit() - увидишь вид своего запроса!!!.
Спустя 10 минут, 35 секунд (1.11.2011 - 02:43) gagger написал(а):
INSERT INTO `jos_makroprom_vm_product` SET `vendor_id` = '1', `product_sku` = '1',
`product_s_desc` = 'Мощность, Вт:1.6 кВт квт\n Напряжение: 220 В \n Описание: на даче, в походе, на рыбалке и т.п.',
`product_desc` = ' Модель Ranger2000 Обозначение Генераторная установка Класс OPEN Напряжение 230В/ 50 Гц Область применения Досуг, периодическая эксплуатация Мощность,
Вт 1600 Акустическая мощность (LWA) 97 Звуковое давление (дБ/7м) 74 Двигатель Марка Honda Модель GC135
Расположение клапанов Верхнее расположение распредвала (OHV) Запуск Ручной Топливо АИ-92 Автоном.
(при полн. баке и нагр. 75%) 2,2 ч Расход топлива 0,77 л/ч Емкость бака 1,7 л Ав. останов по уровню масла Стандарт Мощность (л.с. при 3600 об/мин) 4 Рабочий объем 135 см3
Кол-во масла 1.7 л Габариты и вес Длина 53 см
Ширина 37 см Высота 41 см Вес 23 кг «Розетки» 2 x 10/16A230 В бытовые Автомат защиты стандартно ',
`product_thumb_image` = 'images/products/81105.jpg',
`product_full_image` = 'images/products/81105.jpg', `product_publish` = 'Y', `product_available_date`= '1318982400', `cdate`= '1319002912', `mdate`= '1319002996', `product_name`= 'SDMO RANGER 2000'
Спустя 4 минуты, 36 секунд (1.11.2011 - 02:48) imbalance_hero написал(а):
gagger
А структуру БД показать, а переделанный запрос?
А структуру БД показать, а переделанный запрос?

Спустя 51 секунда (1.11.2011 - 02:49) imbalance_hero написал(а):
gagger
И ещё, зачем ты показываешь первую запись, когда там у тебя уже 1400 записей? Надо показывать как раз последнюю, ты же ПОСЛЕДНЮЮ добавляешь, а не первую
И ещё, зачем ты показываешь первую запись, когда там у тебя уже 1400 записей? Надо показывать как раз последнюю, ты же ПОСЛЕДНЮЮ добавляешь, а не первую

Спустя 1 минута, 25 секунд (1.11.2011 - 02:50) gagger написал(а):
Я все время заливаю пачкой весь текстовый файл, так что то что я показываю это именно тот самый запрос.
--
-- Структура таблицы `jos_makroprom_vm_product`
--
CREATE TABLE IF NOT EXISTS `jos_makroprom_vm_product` (
`product_id` int(11) NOT NULL AUTO_INCREMENT,
`vendor_id` int(11) NOT NULL DEFAULT '0',
`product_parent_id` int(11) NOT NULL DEFAULT '0',
`product_sku` varchar(64) NOT NULL DEFAULT '',
`product_s_desc` varchar(255) DEFAULT NULL,
`product_desc` text,
`product_thumb_image` varchar(255) DEFAULT NULL,
`product_full_image` varchar(255) DEFAULT NULL,
`product_publish` char(1) DEFAULT NULL,
`product_weight` decimal(10,4) DEFAULT NULL,
`product_weight_uom` varchar(32) DEFAULT 'pounds.',
`product_length` decimal(10,4) DEFAULT NULL,
`product_width` decimal(10,4) DEFAULT NULL,
`product_height` decimal(10,4) DEFAULT NULL,
`product_lwh_uom` varchar(32) DEFAULT 'inches',
`product_url` varchar(255) DEFAULT NULL,
`product_in_stock` int(11) NOT NULL DEFAULT '0',
`product_available_date` int(11) DEFAULT NULL,
`product_availability` varchar(56) NOT NULL DEFAULT '',
`product_special` char(1) DEFAULT NULL,
`product_discount_id` int(11) DEFAULT NULL,
`ship_code_id` int(11) DEFAULT NULL,
`cdate` int(11) DEFAULT NULL,
`mdate` int(11) DEFAULT NULL,
`product_name` varchar(64) DEFAULT NULL,
`product_sales` int(11) NOT NULL DEFAULT '0',
`attribute` text,
`custom_attribute` text NOT NULL,
`product_tax_id` int(11) DEFAULT NULL,
`product_unit` varchar(32) DEFAULT NULL,
`product_packaging` int(11) DEFAULT NULL,
`child_options` varchar(45) DEFAULT NULL,
`quantity_options` varchar(45) DEFAULT NULL,
`child_option_ids` varchar(45) DEFAULT NULL,
`product_order_levels` varchar(45) DEFAULT NULL,
PRIMARY KEY (`product_id`),
KEY `idx_product_vendor_id` (`vendor_id`),
KEY `idx_product_product_parent_id` (`product_parent_id`),
KEY `idx_product_sku` (`product_sku`),
KEY `idx_product_ship_code_id` (`ship_code_id`),
KEY `idx_product_name` (`product_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='All products are stored here.' AUTO_INCREMENT=1 ;
Спустя 47 секунд (1.11.2011 - 02:51) gagger написал(а):
Я ж показывал запрос переделанный...
на прошлой странице
на прошлой странице
Спустя 4 минуты, 5 секунд (1.11.2011 - 02:55) imbalance_hero написал(а):
gagger
Я не увидел в запросе как раз использование mysql_real_escape_string, а так же не увидел новые записи в БД
Зачем ты показал мне записи с 1 по 20? Когда должен показывать с 1400 ?
Я не увидел в запросе как раз использование mysql_real_escape_string, а так же не увидел новые записи в БД

Спустя 5 минут, 15 секунд (1.11.2011 - 03:00) gagger написал(а):
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 '` = 'Модель Ranger2000 Обозначение Генераторная установка Кл' at line 6
И как с этим бороться?
И как с этим бороться?
Спустя 1 минута, 54 секунды (1.11.2011 - 03:02) imbalance_hero написал(а):
ты издеваешься? Ты же сказал, что у тебя ошибки никакой нет, когда ты запрос сделал этот.
Спустя 1 минута, 10 секунд (1.11.2011 - 03:03) gagger написал(а):
Он не выдает эту ошибку, если не писать
Просто пропускает запрос в бд но в поля ничего не записывает.
'".mysql_real_escape_string($text2)."'
Просто пропускает запрос в бд но в поля ничего не записывает.
Спустя 2 минуты, 4 секунды (1.11.2011 - 03:05) imbalance_hero написал(а):
gagger
Ты думаешь, я вижу твой запрос?
Ты думаешь, я вижу твой запрос?
Спустя 1 минута, 35 секунд (1.11.2011 - 03:07) gagger написал(а):
mysql_query("SET NAMES 'utf8'");
mysql_query ("INSERT INTO `jos_makroprom_vm_product` SET
`vendor_id` = '1',
`product_sku` = '$prod',
`product_s_desc` = '".mysql_real_escape_string($desc)."',
product_desc` = '".mysql_real_escape_string($text2)."',
`product_thumb_image` = '$pic',
`product_full_image` = '$pic',
`product_publish` = 'Y',
`product_available_date`= '1318982400',
`cdate`= '1319002912',
`mdate`= '1319002996',
`product_name`= '$data[16]'
") or die(mysql_error());
Спустя 4 минуты, 26 секунд (1.11.2011 - 03:11) imbalance_hero написал(а):
gagger
Я же сказал, ко всем данным...
Я же сказал, ко всем данным...
Спустя 3 минуты, 36 секунд (1.11.2011 - 03:15) gagger написал(а):
Так все остальные же проходят, зачем их трогать... Все то же самое выдает после того как я ко всем данным подставил
Спустя 4 минуты, 10 секунд (1.11.2011 - 03:19) imbalance_hero написал(а):
'
' '
' '
Смотрим, где нарушение кавычек?
Правильно, в последней строке, а где логично нарушено? В первой!
' '
' '
Смотрим, где нарушение кавычек?

Спустя 5 минут, 33 секунды (1.11.2011 - 03:25) gagger написал(а):
Я уже плохо соображаю для такого юмора...)
mysql_query("INSERT INTO `jos_makroprom_vm_product` SET
`vendor_id` = '1',
`product_sku` = '".mysql_real_escape_string($prod)."',
`product_s_desc` = '".mysql_real_escape_string($desc)."',
product_desc` = '".mysql_real_escape_string($text2)."',
`product_thumb_image` = '".mysql_real_escape_string($pic)."',
`product_full_image` = '".mysql_real_escape_string($pic)."',
`product_publish` = 'Y',
`product_available_date`= '1318982400',
`cdate`= '1319002912',
`mdate`= '1319002996',
`product_name`= '".mysql_real_escape_string($data[16])."'
") or die(mysql_error());
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 '` = 'Модель Ranger2000 Обозначение Генераторная установка Кл' at line 6
Спустя 1 минута, 51 секунда (1.11.2011 - 03:26) imbalance_hero написал(а):
gagger
product_desc` - закрытая кавычка есть, а где открытая?
product_desc` - закрытая кавычка есть, а где открытая?
Спустя 14 минут, 38 секунд (1.11.2011 - 03:41) gagger написал(а):
Угу точно... сплю. Теперь ошибки нет и снова пустые ячейки.............
Спустя 2 минуты, 42 секунды (1.11.2011 - 03:44) imbalance_hero написал(а):
Ладно, ты меня игнорируешь, я тебя тоже буду

Спустя 6 минут, 4 секунды (1.11.2011 - 03:50) gagger написал(а):
Блин, ну можешь объяснить что я опять не не сделал? Я серьезно уже плохо соображаю.
Спустя 3 часа, 54 минуты, 8 секунд (1.11.2011 - 07:44) Игорь_Vasinsky написал(а):
mysql_query("SET NAMES 'utf8'");
mysql_query ("INSERT INTO `jos_makroprom_vm_product` SET
`vendor_id` = 1,
`product_sku` = '".$prod,"',
`product_s_desc` = '".mysql_real_escape_string($desc)."',
`product_desc` = '".mysql_real_escape_string($text2)."',
`product_thumb_image` = '".$pic."',
`product_full_image` = '".$pic."',
`product_publish` = 'Y',
`product_available_date`= 1318982400,
`cdate`= 1319002912,
`mdate`= 1319002996,
`product_name`= '".$data[16]."'
") or die(mysql_error());
Спустя 2 часа, 14 минут, 44 секунды (1.11.2011 - 09:59) gagger написал(а):
В общем ничего не помогает, я не понимаю как такое может быть, но это вряд ли связанно с запросом к БД...
Спустя 8 минут, 18 секунд (1.11.2011 - 10:07) gagger написал(а):
4 страницы писали, и никто не обратил внимание на mysql_query("SET NAMES 'utf8'");
именно это и убивало текст
именно это и убивало текст
Спустя 9 минут, 49 секунд (1.11.2011 - 10:17) Игорь_Vasinsky написал(а):
так ты блин сам с кодировкой то определиться не мог?
Спустя 6 минут, 15 секунд (1.11.2011 - 10:23) gagger написал(а):
Игорь_Vasinsky
А то ты не знаешь как это бывает? Допускаешь ошибку ищешь совершенно в другом месте и не понимаешь почему не работает. Для этого и существует этот раздел, чтобы не упрекать, а помогать тем кто попал в такую ситуацию.
А то ты не знаешь как это бывает? Допускаешь ошибку ищешь совершенно в другом месте и не понимаешь почему не работает. Для этого и существует этот раздел, чтобы не упрекать, а помогать тем кто попал в такую ситуацию.
Спустя 4 часа, 9 минут, 43 секунды (1.11.2011 - 14:33) imbalance_hero написал(а):
gagger
Для начала ты не скинул скрин-шот с записями из БД.
Для начала ты не скинул скрин-шот с записями из БД.