2013-02-19 4 views
0

У меня есть 2 стола: STD и SMS. Мне нужно сделать, чтобы выбрать из таблицы STD копию результата в массив, а затем вставить каждый элемент массива в другую таблицу, SMS.Как вставить строки в столбце с данными, полученными из mysql_fetch_array?

Вот мой код:

$query=mysql_query("Select from STD WHEre <my conditions>"); 
$result=mysql_fetch_array($query) 
foreach($result as $value) 
mysql_query("INSERT INTO SMS set SMS.column='$value'") 

Это не обновляет таблицу SMS на всех. Может ли кто-то здесь лучше понять или рассказать мне, что не так с кодом? Благодарю.

+0

является то, что псевдо-код? потому что вы не выбираете ничего в своем первом запросе ... и вы обновляете каждую строку в своей таблице SMS – Najzero

+0

нет, извините. Я просто омрачил свои условия. – Sang

ответ

0

Вы можете сделать это только один запрос, используйте INSERT INTO...SELECT заявление.

INSERT INTO SMS (col1, col2, ...., Coll3) 
SELECT col1, col2, ...., Coll3 
FROM STD 
+0

Я не могу. Массив, который я мог бы производить, может составлять сотни. – Sang

+1

Вам не нужен массив для хранения значений. –

+0

Я имею в виду, что колонки будут для меня очень удобными для ввода вручную – Sang

0

Я полагаю, что вы пытаетесь получить все строки из таблицы STD и вставить их в SMS таблицы, и что определение SMS таблицы такой же, как STD один?

Если да, то это должно работать:

$result = mysql_query('SELECT * FROM `STD` WHERE <my_conditions>'); 
while (($row = mysql_fetch_assoc($result)) !== FALSE) // Loop over all rows selected 
{ 
    $columns = implode(', ', array_keys($row)); // returns string of column names e.g. "col1, col2, col3" etc. 
    $values = "'" . implode("', '", array_values($row)) . "'"; // returns string of quoted values e.g. "'val1', 'val2', 'val3'" 
    mysql_query("INSERT INTO `SMS` ($columns) VALUES ($values)"); // inserts the row into the SMS database table 
} 
1

попробовать это, но это обновит все значения таблицы, как ваш фактический запрос делает:

$query=mysql_query("Update SMS set 
    SMS.column=(Select <column_name> from STD where <my conditions> limit 1)"); 
1

Вам об обновлении или вставка данных? если вы хотите вставить user JW already answered, иначе вы должны установить условие для своего запроса на обновление.

$query=mysql_query("Select from STD WHEre <my conditions>"); 
$result=mysql_fetch_array($query) 
foreach($result as $value) 
mysql_query("Update SMS set SMS.column='$value' where SMS.std_id = '{$value['id']}'"); /// fieldnames are my example, You must generate Your condition.. 

или Вы можете использовать update from another table

Смежные вопросы