如何将这些数据添加到我的临时表中?

mspsb9vt  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(379)

我希望这些检索到的数据(两行)插入到另一个名为presubcategory的(临时)表中。但在那个表中只插入了一行。这个代码怎么了?

<?php
    require 'configuration.php';?>
<?php 
if(isset($_POST['action'])) {
    $sql_c = "SELECT c.catId, s.subCatId, s.subCatName
              FROM category c, subcategory s
              WHERE c.catId=s.catId AND c.catId='".$_POST['action']."' ;";

    $result_c = $conn->query($sql_c);
    if($result_c->num_rows>0) {
        while($row = $result_c->fetch_assoc()) {
            $ctId    = $row['catId'];
            $sctId   = $row['subCatId'];
            $sctname = $row['subCatName'];

            $sql_d = "INSERT INTO presubcategory
            (presubcatId,precatId,presubcatName)
            VALUES('".$ctId."','".$sctId."','".$sctname."');";
        $conn->query($sql_d);          
        }
    }
}
?>
nnt7mjpx

nnt7mjpx1#

在这里您应该创建一个包含两个原始表和简单联接的视图。

CREATE VIEW presubcategory AS 
  SELECT c.catId, s.subCatId, s.subCatName
   FROM category c, subcategory s
   WHERE c.catId=s.catId';

SELECT `subCatId` as preSubCatId,
 `catId` as preCatId,
 `subCatName` as preSubCatName
 FROM presubcategory WHERE catid=?;

不需要复制数据,它满足您对presubcategory表的查询。

zqry0prt

zqry0prt2#

正如aynber所指出的,您可以使用insert into select语句来实现这一点:

<?php
require 'configuration.php';

if(isset($_POST['action'])) {
    $sql = "INSERT INTO presubcategory
            (presubcatId,precatId,presubcatName)
            (
              SELECT c.catId, s.subCatId, s.subCatName
              FROM category c, subcategory s
              WHERE c.catId=s.catId
              AND c.catId='".$_POST['action']."' 
            );";
    $conn->query($sql);          
}
?>

这是未经测试的,但我认为它应该做到这一点,假设您的select语句已经正常工作。

相关问题