Доброго времени суток всем! Есть задача: массив записать в бд. Как это реализовать не могу придумать. У кого какие идеи. Спасибо. Как вариант Код (Text): foreach($arr as $item){ INSERT INTO dbo.T1 (1,2,3,4,5,6,7) VALUES ('"$item"'); } Но наверное не вариант!
Код (Text): { "List": [ { "OriginalName": "string", "Genre": "string", "Country": "string", "ViewCountDaily": 0, "AgeRestriction": "string", "Thumbnail": "string", "Cast": "string", "Description": "string", "Director": "string", "CreatorName": "string", "CreatorObjectID": "string", "Year": "string", "Duration": "string", "HorizonalThumbnail": "string", "IsNonStop": true, "SubCreationIDs": [ 0 ], "Rating": "string", "Trailers": [ "string" ], "Frames": [ "string" ], "ReleaseDate": "string", "ObjectID": 0, "ClassType": "string", "Name": "string" } ] } Массив объектов с данными
Вы предыдущее сообщение успели удалить)) а я успел прочитать)) у Вас какая структура таблицы? Вам надо записать значения массива в столбцы таблицы имена которых совпадают с ключами массива? Или у Вас есть просто массив и вы хотите его целиком запихнуть в одно поле таблицы что бы потом можно было этот массив просто достать и что то с ним сделать? т.е. поиск по данным этого массива не предусматривается используя средства mysql)
https://dev.mysql.com/doc/refman/5.7/en/json.html как нынче там с поиском - я хз, в postgres с индексами вполне приемлемо, если это конечно не частые запросы, а с mysql я давно слез.
@romach, https://dev.mysql.com/doc/refman/5....ndary-indexes.html#json-column-indirect-index - там вот такая индексация возможна
Всем спасибо! Решил проблему вот так: Код (Text): INSERT INTO `bd` (1,2,3) VALUES " . implode( ',',$values ); Где $values - это массив
Не стал создавать новую тему, т.к. суть вопроса та же, все думаю как массив в таблицу запнуть :: есть некая выгрузка из х..р пойми откуда со списком товаров, тут посидел поюзал PHPExel, получилось весь этот файл прочитать и вывести в виде таблицы, нашел решение на хабре, собственно PHP: require_once($_SERVER['DOCUMENT_ROOT'].'/phpExel/Classes/PHPExcel/IOFactory.php'); $file = $_SERVER['DOCUMENT_ROOT'].'/exel/qwe1.xlsx'; // Открываем файл $xls = PHPExcel_IOFactory::load($file); // Устанавливаем индекс активного листа $xls->setActiveSheetIndex(0); // Получаем активный лист $sheet = $xls->getActiveSheet(); // Получили строки и обойдем их в цикле $rowIterator = $sheet->getRowIterator(); echo "<table>"; foreach ($rowIterator as $row) { // Получили ячейки текущей строки и обойдем их в цикле $cellIterator = $row->getCellIterator(); echo "<tr>"; foreach ($cellIterator as $cell) { echo "<td>" . $cell->getCalculatedValue() . "</td>"; $array[]=$cell->getCalculatedValue(); } echo "</tr>"; } echo "</table>"; for($k=0; $k<=count($array); $k=$k+3){ единственное что сейчас идет в голову, это то, что я знаю, что у меня строка в 3 ячейки, и я каждый элемент массива буду записывать в таблицу в цикле т.е. $sql = "INSERT INTO tovar (description, price, count) VALUES('$array[$k]', '$array[$k+1]', $array[$k+2])"; } Внимание вопрос: 1. почему-то подумал что если у меня товара будет 200 000 не гикнет ли БД от такого количества обращений. 2. вообще в правильном ли направлении я мыслю, или это делать лучше по другому? Сама таблица еще не создана, проект впереди, просто юзал PHPExel, чтобы понять как это работает, но логика будет такова, что exel файл через форму загрузки файлов из админки отправляем на сервер, он попадает в папку temp, данные переносятся в БД и файл удаляется.
инсертить лучше сразу небольшими блоками, например по 100 записей за инсерт, БД не гикнет - гикнуть может скрипт импорта - если задано ограничение на время выполнения - потому его лучше увеличить или снять вообще
И поиск по ним навернуть, да. А можно вообще всё в бд, в одну таблицу. Где вы этому научились ? @New_neo судя по вашему описанию приходящие данные статичны. Создайте таблицу с соответствующими полями и туда всё пихайте. Я надеюсь вы валидируете приходящие значения.
все зависит от ситуации... я уже дважды сталкивался с ситуацией когда вариант хранения сериализованного массива был вполне достаточный..
@Алекс8 например тем что он поддерживается многими япами, а пхп-сериализация - только в пхп. Да и в разных версиях может быть разной.