我想连续地在两列中插入变量的数据

时间:2013-08-13 14:57:44

标签: php mysql

<?php
$db = mysql_connect('localhost', 'root', '') or
  die ('Unable to connect. Check your connection parameters.');

mysql_select_db('my_db', $db) or die(mysql_error($db));

$query = 'SELECT
       second, count(*) FROM tb_one GROUP BY second';


$result = mysql_query($query, $db) or die(mysql_error($db));

while ($row = mysql_fetch_assoc($result)) {

    foreach ($row as $value) {

        $queryy = 'INSERT INTO tb_two (name) VALUES ("' . $value . '")';
        mysql_query($queryy, $db) or die(mysql_error($db));

    }
}
?>

在此脚本中,第一个查询用于选择和计算重复值(这很有效),但在第二个查询中,我想将所选数据插入到另一个包含两列的表中,第一列用于其名称,第二列用于它的重复次数......如果insert语句中有一列,它运行良好并添加值。但是我想要两个列 - 一个用于名称,一个用于计算重复数量。谢谢先生......我已经尝试了很多天..

3 个答案:

答案 0 :(得分:4)

你可以在MySQL中完成所有这些:

INSERT INTO tb_two(name, count)
    SELECT second, count(*) 
    FROM tb_one 
    GROUP BY second;

尽管如此,在其他新闻the mysql_ functions have been deprecated中。您应该使用PDO Library。或者至少是MySQL Improved Library

答案 1 :(得分:0)

通过对重复列进行别名来简化您的生活,以便您可以更轻松地解决问题。 方法如下:

替换此

$query = 'SELECT second, count(*) FROM tb_one GROUP BY second';

由此:

$query = 'SELECT second, count(*) as duplicates FROM tb_one GROUP BY second';

您现在有“重复”作为列名称。然后你可以使用它,例如:

while ($row = mysql_fetch_assoc($result)) {

foreach ($row as $r) {

$queryy = "INSERT INTO tb_two SET name='".$r['second']."', duplicates='".$r['duplicates']."'";
mysql_query($queryy, $db) or die(mysql_error($db));

}
}

答案 2 :(得分:0)

试试这个,抱歉,如果它有语法问题,我在记事本中做了。

while ($row = mysql_fetch_assoc($result)) 
{
    $query = "INSERT INTO tb_two (column1, column2) VALUES ('" . $row[0] . "', '" . $row[1] . "')";
    mysql_query($query, $db) or die(mysql_error($db));
}