代码之家  ›  专栏  ›  技术社区  ›  Madlon

PDO回路插入

  •  0
  • Madlon  · 技术社区  · 6 年前

    我有一个数据库:

    ------------------------------
    name    |extension  |filesize
    ------------------------------
    abc     | php       | 12
    def     | php       | 18
    ghi     | bat       | 32
    jkl     | bat       | 24
    mno     | php       | 30
    

    我想指定所有扩展名并总结文件大小,因此它工作得很好:

    $sql= "SELECT extension, SUM(filesize) AS total FROM mytable GROUP BY extension";
    $stmt = $pdo->query($sql);
    
    while($row = $stmt->fetch(PDO::FETCH_BOTH)){
     echo $row['extension'] . " - " . $row['1'] . "<br>";
    }
    

    输出为:

    php - 60
    bat - 56
    

    但现在我想将这些结果插入一个新表中(当然使用PDO)。我想要一张新桌子:

    ---------------------
    ext     |sumfilesize
    ---------------------
    php     | 60
    bat     | 56
    

    我想我必须在while循环中进行一些查询,但是否可以在查询中进行查询? 我该怎么做?

    2 回复  |  直到 6 年前
        1
  •  0
  •   merrais    6 年前
    $sql="INSERT INTO myTotalTable (extension,total) SELECT extension,SUM(filesize) AS total FROM mytable GROUP BY extension";
    $stmt = $pdo->query($sql);
    
        2
  •  0
  •   Infiltrator    6 年前

    只要不在while循环中创建新表,就可以继续了。只要将查询插入while循环中数据库中的值,就完成了。 代码应如下所示:

    $sql= "SELECT extension, SUM(filesize) AS total FROM mytable GROUP BY extension";
    $stmt = $pdo->query($sql);
    
    while($row = $stmt->fetch(PDO::FETCH_BOTH)){
      echo $row['extension'] . " - " . $row['1'] . "<br>";
      $query = "INSERT INTO TableName (ext, sumfilesize) VALUES ($row['extension'], $row['1'])";
      $query->execute();
    }