получить имя $ _POST и значение в цикле php foreach для построения длинной строки - PullRequest
0 голосов
/ 18 июля 2011

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

Я хочу иметь возможность различать значение и имя каждого переключателя (после публикации), чтобы я мог вставить их в базу данных. Это мой код: (но, может быть, мне нужен неровный массив?)

VALUE:

foreach ($_POST as $key => $value)
{
$value = $value.',';
}

ИМЯ ПОСТА: ???

foreach ($_POST[name]?? as ??? => $postname)
{
$postname = $postname.',';
}

Тогда мне нужно провести различие между значением и именем и указать правильные столбцы в базе данных:

mysql_query("INSERT INTO tabke SELECT '$longstring' or die(mysql_error());;  

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

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

// you should filter out values from your $_POST...
$ignoredFields = array('submit', ...);
$fields = array_intersect_key($_POST, array_flip($ignoredFields));

$values = array();
foreach ($fields as $key => $value) {
   $key = mysql_real_escape_string($key);
   $value = mysql_real_escape_string($value);
   $values[] =  "'{$key}', '{$value}'";
}

// creation the insert string
$query = 'INSERT INTO `tabke` (`key`,`value`) VALUES ('.implode(,'),(', $values).')';
$result = mysql_query($query);

** Примечание **: Я полагаю, что ваш стол tabke выглядит примерно так:

+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment | 
| key     | varchar(64)      | NO   |     | NULL    |                | 
| value   | text             | NO   |     | NULL    |                | 
+---------+------------------+------+-----+---------+----------------+

Пока ваш запрос не расширяется max_allowed_packet , это будет работать просто отлично. Если ваши данные превышают этот размер, вы можете просто использовать array_chunk и выполнять итерацию по частям и создавать INSERT для каждого блока.

0 голосов
/ 18 июля 2011

Это будет ключ $, но для каждой отдельной радиосвязи "Группа" будет только один пост, также вы должны очищать свои входные данные для внедрения SQL.

...