使用PHP和Mysql使用一个Query将DATA插入2个表中

时间:2014-03-13 16:08:01

标签: php mysql

我有2个表,我试图使用PHP

插入数据
Table: WINE
-----------------------------------------------------------------
|  wine_id  |  wine_type  | country  |  indicator  |  color  |
-----------------------------------------------------------------

wine_id自动递增,然后这是我的另一张表

Table: stock
 --------------------------------------
 |  stock_id  |  wine_id  | quantity  |
 --------------------------------------

对于STOCK表,我的库存ID为自动递增,wine_id是外键,所以我需要插入的是数量。

我的语法如下:

$sql = mysql_query("INSERT INTO TABLE1(field1, field2, field3) VALUES('value1',value2,value3) INSERT INTO STOCK(field) VALUES ('value1')");

如果还有其他方法,请提出建议,我想要一些例子。

4 个答案:

答案 0 :(得分:6)

您需要用分号分隔两个INSERT语句。

mysql_*)扩展程序自PHP 5.5.0起已弃用,将来会被删除。相反,应使用MySQLiPDO_MySQL扩展名。切换到PreparedStatements甚至可以更好地抵御SQL注入攻击!

答案 1 :(得分:2)

您可以运行多次INSERTS,但不能从一个INSERT语句中插入两个表。 还要确保为外键获取带有LAST_INSERT_ID()的最后一个插入ID,并在两个INSERTS之间使用分号;

答案 2 :(得分:2)

从它的外观来看,你要做的是:

  1. 将数据插入wine表格
  2. wine
  3. 获取ID
  4. 将ID插入stock表格
  5. mysql_query不支持多个查询。所以,我的建议是:

    $result = mysql_query("INSERT INTO `wine` (`wine_type`, `country`, `indicator`, `colour`) VALUES ('Merlot', 'Australia', 'Dry', 'Red')");
    $result = mysql_query("INSERT INTO `stock` (`wine_id`, `quantity`) VALUES ('".mysql_insert_id()."', '0');");
    

    修改当然要考虑自己的变量和价值卫生。如前所述,mysql_函数已被弃用,您最好在不久的将来转移到数据库的PDO结构。

答案 3 :(得分:1)

你可以做到 multiple statement details

像这样:

$sql = "INSERT INTO TABLE1(field1, field2, field3) VALUES('value1',value2,value3); INSERT INTO STOCK(field) VALUES ('value1');";

multi_query($conn,$sql);

您需要使用mysqli_*。我认为$conn是您的mysqli连接