Я не знаю, почему вы хотите вставить, используя 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
для каждого блока.