Извлечение двух столбцов из одной таблицы и вставка в другую с использованием MySQL и PHP - PullRequest
1 голос
/ 16 мая 2011

У меня есть две таблицы в MySQL, в частности, account и subscriber_data.

Я хочу использовать два столбца, присутствующих в таблице счетов (id, name), и вставить его в таблицу subscriber_data в два столбца с именем (sub_id, value).

Мне кажется, что не могунайдите способ извлечь эту информацию и поместить ее в другую таблицу, не добавляя ее в одно и то же поле значения в той же строке, как показано ниже: 0, 0, 1

В настоящее время мой PHP выглядит следующим образом:

$sql = "SELECT * FROM accounts";
$result = mysql_query($sql);

while($alt_result = mysql_fetch_array($result, MYSQL_NUM)){
$id[] = $alt_result[0];
$value1[] = $alt_result[1];
}
$idstring = implode(', ', $id); 
$value1 = implode(', ', $value1); 


$sql = "INSERT INTO subscriber_data (field_id, sub_id, value) VALUES('1', '$idstring', '$value1') ON DUPLICATE KEY UPDATE value='$value1'";
$result = mysql_query($sql);

Я новичок в этом, и, очевидно, что-то делаю не так ... Я искал и не мог найти ответ.

Спасибо.

1 Ответ

1 голос
/ 16 мая 2011

Сначала я не видел, что вы делаете в PHP, прежде чем вызывать скрипт вставки.Возможно, потому что я не привык к написанию сценариев PHP, хотя, скорее всего, потому, что в то время я не уделял достаточно внимания.

Итак, насколько я понимаю, что вы делаете, вы, кажется, делаетеэто неправильно.

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

В вашем случае это может выглядеть примерно так:

INSERT INTO subscriber_data (field_id, sub_id, value)
SELECT '1', id, name
FROM accounts

Обратите внимание, что это одна инструкция, и она заменяет SELECT... и INSERT... в вашем коде.Я думаю, что будет достаточно, если вы оставите только две последние строки вашего PHP-скрипта выше, где SQL-скрипт, который вы сохраняете в $sql, должен быть просто изменен в соответствии с моим предложением.

Если япропустите что-то, пожалуйста, дайте мне знать.

...