将数据同时保存到两个表中

时间:2014-08-14 17:45:13

标签: php mysql

我有这段代码

<?php
    include 'dbconnect.php'; ?>
<head>
</head>

<body>
    <form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
    <input type="text" name="product_name"/>
    <input type="text" name="product_price" />

        <select name="product_cat">
        <?php
        $results = $connect->query("SELECT * FROM categories ORDER BY cat_name");
            while($row = $results->fetch_array()) {
            extract($row);
            echo "<option value='"."{$cat_name}"."'>"."{$cat_name}"."</option>";
            }  
        $results->free();
        ?>
        </select>

    <input type="submit" name="submit" value="Submit">
    </form>
<?php   
    if($_POST){
    $sql = "INSERT INTO products (prd_name, prd_price, cat_id) VALUES(?,?,?)";
    if($stmt = $connect->prepare($sql) )
        {
            $productname = $_POST['product_name'];
            $productprice = $_POST['product_price'];
            $productcat = $_POST['product_cat'];
            $stmt->bind_param("sii", $productname, $productprice, $productcat);
        if($stmt->execute())
            {
                echo "Created";
                $stmt->close();
            }else{
                    die("Unable to create category.");
                }
                }else{
                die("Unable to prepare statement.");
            }
                $connect->close();
            }
        ?>    
</body>
</html>

此处从名为categories的表中调用类别名称。您可以在下拉列表中看到代码。一旦用户选择了类别名称,填写产品名称和产品价格,表单将所有三个数据保存到名为products的表中。

还有第三个名为category_product的表,其中包含两列prd_id和cat_id(产品ID和类别ID)。我需要将此产品的ID和类别以及此表格记录到此表中。

简而言之,如何仅在回显名称时从类别表中获取类别ID,以及如何知道产品的上次保存ID,然后将这两个记录插入到第二个(category_products)表中同一时间。

1 个答案:

答案 0 :(得分:1)

您可以从第一个语句中获取insert_id以在第二个语句中使用。这里有一些伪代码来帮助你

if($stmt->execute()) {
     $record_id = $stmt->insert_id;
     $sql = "INSERT table2(data, table1_id) VALUES($someval, $record_id)";
     // Run the query here
}