【问题标题】:How to insert data on 2 table with join statement database in MySQL如何在 MySQL 中使用连接语句数据库在 2 个表上插入数据
【发布时间】:2021-01-20 02:38:31
【问题描述】:

我想在输入数据的时候合并2个表,有我的表

products table (product_id is Auto Increment)
product_id   product_name
-------------------------
1              Mouse
2              Keyboard

price table (price_id is Auto Increment)
price_id      product_id    price
---------------------------------
1              0             2000
2              0             1000

我想在输入数据时将products表中的表product_id连接到price表中的product_id,问题是当我在price表中输入并添加到数据库时不显示我输入的数据

这是我的代码

<?php 
    if(isset($_POST['submit'])){
    // ambil data dari formulir
    $product_name = $_POST['product_name'];
    $price = $_POST['price'];

// buat query
    $sql1 = "INSERT INTO products VALUES ('', '$product_name')";

    $sql2 = "SELECT price.price,
                   products.product_id
             FROM price LEFT JOIN products AS procs ON product_id = procs.product_id
             INSERT INTO price VALUES ('',procs.product_id,'$price')";
    $objectModel = new Model();
    $query = $objectModel->getConnection();
    $data1 = mysqli_query($query,$sql1);
    $data2 = mysqli_query($query,$sql2);
}

【问题讨论】:

  • 警告!您对SQL injection 攻击敞开大门!您应该使用参数化的prepared statements,而不是直接在查询中使用完全未转义的用户数据。 永远永远永远相信用户输入。

标签: php mysql sql join sql-insert


【解决方案1】:

第二个查询不是有效的 MySQL 语法。 INSERT 在 SELECT 之前。我还建议 LAST_INSERT_ID() 检索最后插入的产品的 id 而不是加入:

insert into price(product_id, price) values (last_insert_id(), ?)

请注意,这是一个准备好的语句,其中输入值通过占位符 (?) 传递,而不是连接在查询字符串中。更多关于为什么和如何可以在this famous SO question阅读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多