Как я могу вставить массив данных в таблицу базы данных? - PullRequest
1 голос
/ 09 апреля 2009

Я занимаюсь разработкой программы управления посещаемостью, используемой для ведения учета отсутствия учащегося. Пользователям этого программного обеспечения необходимо будет вводить различные даты, обновляемые один раз в месяц: например, будет введен список дат, в которые ученик отсутствовал в течение этого конкретного месяца, и моя программа должна затем сохранять их в базе данных с каждым дата добавлена ​​в виде новой строки в соответствующую таблицу.

У меня есть даты, хранящиеся с использованием массивов внутри, как я могу перенести их в базу данных? Как мне поступить?

Ответы [ 5 ]

2 голосов
/ 09 апреля 2009

Вы не упомянули используемую систему баз данных, поэтому мой ответ носит общий характер. Обычный способ сделать это - запустить несколько операторов вставки один за другим:

INSERT INTO Table1 (FirstColumn, SecondColumn)
VALUES ('a', 'b');
INSERT INTO Table1 (FirstColumn, SecondColumn)
VALUES ('c', 'd');
INSERT INTO Table1 (FirstColumn, SecondColumn)
VALUES ('e', 'f');
GO

Трюк способ сделать это состоит в том, чтобы использовать оператор UNION ALL:

INSERT INTO Table1 (FirstColumn, SecondColumn)
SELECT 'a', 'b'
UNION ALL
SELECT 'c', 'd'
UNION ALL
SELECT 'e', 'f'
GO

Версии SQL Server до 2008 года поддерживают только эти методы. Но SQL 2008 и MySQL 3.22 и выше также поддерживают метод построения строк:

INSERT INTO Table1 (FirstColumn, SecondColumn)
VALUES ('a', 'b'),
VALUES ('c', 'd'),
VALUES ('e', 'f')
GO

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

2 голосов
/ 09 апреля 2009
foreach($arrayName as $arrayValue) {

// run your query here!

}

например:

$myArray = array('apple','orange','grape');

foreach($myArray as $arrayFruit) {
$query = "INSERT INTO `Fruits` (`FruitName`) VALUES ('" . $arrayFruit . "')";
mysql_query($query, $connection);
}

это имеет смысл / соответствует тому, что вы думали?

1 голос
/ 09 апреля 2009

Вы хотите хранить даты отдельно, чтобы вы могли манипулировать ими, запрашивать их и т. Д.? Или вы просто хотите сохранить массив как есть?

Если вы хотите хранить даты отдельно, вы можете создать таблицу с FK для студентов, столбец для даты и столбец для характера даты, например отсутствие, задержка, ...

Тогда вы действительно сохраните отдельные даты в этой таблице. Если вам нужно, путем итерации, но если вы можете с одним из решений Цербра! Не рекомендуется иметь db-запросы внутри циклов.

Если вам просто нужно где-то сохранить этот массив, вы можете его сериализовать и сохранить сериализованную строку в столбце text или varchar.

0 голосов
/ 09 апреля 2009

Какой язык и какую базу данных вы используете? Это веб-приложение? Настольное приложение? Мы не можем помочь вам без дополнительной информации.

В зависимости от вашей ситуации может работать любое из перечисленных выше решений. Или вы можете даже загрузить все записи о посещаемости одновременно в виде CSV или XML-документа. Возможно, еще немного исследований с вашей стороны помогут вам задать более полезный вопрос?

0 голосов
/ 09 апреля 2009

Переберите массив и выполните вставку SQL для каждой даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...