2013-02-19 52 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 2013-02-19 16:36:23

+0

不,我很抱歉。我只是忽略了自己的条件。 – Sang 2013-02-19 16:38:44

回答

0

你可以做,在短短一个查询,使用INSERT INTO...SELECT声明。

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

我不行。我可能生成的数组可能会有数百个值。 – Sang 2013-02-19 16:37:30

+1

你不需要数组来存储这个值。 – 2013-02-19 16:38:22

+0

我的意思是,这些列对于我来说手动输入会有很大的帮助 – Sang 2013-02-19 17:18:25

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

相关问题