powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP + MySQL] Как за один раз добавить в таблицу массив значений?
21 сообщений из 21, страница 1 из 1
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804146
AndreyK0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем дня!
Задача: большой xml файл (13мб) распарсить и засунуть в базу.
Пользуюсь XMLReader, т.к. другие способы не освоил/не подходят,
поэтому полученные из xml данные запихиваю в массив (23000 значений).
Необходимо потом эти значения вставить в базу, но что-то не получается.
foreach не подойдет, т.к. очень много значений.
Естественно такой код не работает:
Код: php
1.
$insert=mysql_query("INSERT INTO price (kod) VALUES ('$kodes')");


где $kodes - массив
подозреваю что нужно как-то через implode, но никак не получается...

Подскажите пожалуйста!
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804212
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foreach - чем не подойдет?

Код: php
1.
$insert=mysql_query('INSERT INTO price (kod) VALUES (' . implode('),(', $kodes . ')');



но не знаю как он переварит 23к значений.
В крайнем случае разбивайте с помощью array_slice и пихайте частями.
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804216
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забудьте обезопасить данные.
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804224
AndreyK0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
foreach 23к значений 10-15 минут пихает...
в php новичок, сейчас буду курить array_slice
а что вы имеете в виду под "обезопасить"?
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804251
AndreyK0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!!! Работает, чуть подкорректировал и все 23к залетают в таблицу в момент
Код: php
1.
2.
$q = "INSERT INTO price (kod) VALUES ('".implode("'), ('", $kodes)."')";
$insert = mysql_query($q);



Все-же, что значит "обезопасить данные"?
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804577
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот если в данных попадется кавычка, например, или т.п.
http://ru.wikipedia.org/wiki/Внедрение_SQL-кода
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804579
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну кавычки я там специально писать не стал.
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804580
Жырный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreyK0,

Код: php
1.
2.
3.
$arr = array('lol', 'xdd', "\x00");
$safe_arr = array_map('mysql_real_escape_string', $arr);
$sql = "INSERT INTO tbl VALUES('" . implode("', '", $safe_arr) . "');";
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804594
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
; drop table, да.
http://xkcd.ru/327/
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804607
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyK0,

Прикол XML-ридера как раз в том, что он парсер потоковый. То есть считал кусок, запихнул в базу и читай дальше - о том уже забыл. Вот ссылочка полезная , кстати, об этой всей байде.
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37804616
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow; drop table, да.
http://xkcd.ru/327/

Это выражение в кавычках будет воспринято как текстовые данные.
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37805187
AndreyK0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое за совету новичку!!
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37805256
AndreyK0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять беда :(
с использованием $safe_arr данные не заносятся в базу. Т.е.:
без использования $safe_arr запрос имеет вид и выполняется нормально:
Код: php
1.
INSERT INTO merlion_price (kod, name, price) VALUES ('45708', 'Блок питания FSP ATX 350W 350PNF 20+4 pin, PPFC ,120mm fan, I/O Switch, SATA', '865'), ('86411', 'Блок питания FSP ATX 350W 350PNR 20+4 pin, 120mm fan, I/O Switch, 2*SATA', '702'), ('637400', 'Блок питания FSP ATX 400W 400-60APN 80+ 20+4 pin, PPFC, 120mm fan, I/O Switch, SATA', '1153')


а с $safe_arr такой:
Код: php
1.
INSERT INTO merlion_price (kod, name, price) VALUES (\'45708\', \'Блок питания FSP ATX 350W 350PNF 20+4 pin, PPFC ,120mm fan, I/O Switch, SATA\', \'865\'), (\'86411\', \'Блок питания FSP ATX 350W 350PNR 20+4 pin, 120mm fan, I/O Switch, 2*SATA\', \'702\'), (\'637400\', \'Блок питания FSP ATX 400W 400-60APN 80+ 20+4 pin, PPFC, 120mm fan, I/O Switch, SATA\', \'1153\')


и база пуста после запроса (
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37805274
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyK0,

эскейпить надо не весь запрос а данные попадающие в него
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37805279
AndreyK0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот полнее код:
Код: php
1.
2.
3.
4.
$que = array_slice($base, $j, $i);
$que = array_map('mysql_real_escape_string', $que);
$que = implode(', ', $que);
$q = "INSERT INTO merlion_price (kod, name, price) VALUES $que";
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37805280
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам же показали
Жырный
Код: php
1.
2.
3.
$arr = array('lol', 'xdd', "\x00");
$safe_arr = array_map('mysql_real_escape_string', $arr);
$sql = "INSERT INTO tbl VALUES('" . implode("', '", $safe_arr) . "');";
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37805372
AndreyK0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, понял.
использовал addslashes еще на стадии чтения xml. Все работает, спасибо!
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37805384
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysql_real_escape_string
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37805412
AndreyK0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал через mysql_real_escape_string, все работает
ткните в меня палкой за мою тупость :)
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37806117
dresden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
Hettmysql_real_escape_string
я аж протрезвел)))
...
Рейтинг: 0 / 0
[PHP + MySQL] Как за один раз добавить в таблицу массив значений?
    #37806615
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я на одном сайте нашел фичу, не знаю как они там данные эскейпят, но там кавычки не экранируются, а заменяются на слеш \

Получается с помощью этих слешей можно закомментировать настоящие (которые добавляются скриптом).
Только я еще не придумал как закрыть кавычку теперь (
Получается если передать одну кавычку, то выпадает запрос:

Код: sql
1.
Error in SQL: select page_id, template_id from pages_ru where page_html='\' and parent_id=8



т.к. слеш превратился в кавычку и заэкранировал закрывающую кавычку
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP + MySQL] Как за один раз добавить в таблицу массив значений?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]