0

我有 2 张桌子:STD 和 SMS。我需要做的是从表 STD 中选择将结果复制到数组中,然后将数组的每个元素插入到另一个表 SMS 中。

这是我的代码:

$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 表。这里有人可以有更好的主意或告诉我代码有什么问题吗?谢谢。

4

4 回答 4

1

试试这个,但这会像您的实际查询一样更新表的所有值

    $query=mysql_query("Update SMS set 
    SMS.column=(Select <column_name> from STD where <my conditions> limit 1)");
于 2013-02-19T16:44:55.447 回答
1

你关于更新或插入数据?如果您想插入用户 JW 已经回答,否则您必须在更新查询上设置条件。

$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.. 

或者您可以使用另一个表中的更新

于 2013-02-19T16:45:15.897 回答
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
}
于 2013-02-19T16:44:41.607 回答
0

你可以在一个查询中做到这一点,使用INSERT INTO...SELECT语句。

INSERT INTO SMS (col1, col2, ...., Coll3)
SELECT col1, col2, ...., Coll3
FROM STD
于 2013-02-19T16:34:28.397 回答