我有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')");
如果还有其他方法,请提出建议,我想要一些例子。
答案 0 :(得分:6)
您需要用分号分隔两个INSERT
语句。
此mysql_*
)扩展程序自PHP 5.5.0
起已弃用,将来会被删除。相反,应使用MySQLi
或PDO_MySQL
扩展名。切换到PreparedStatements
甚至可以更好地抵御SQL注入攻击!
答案 1 :(得分:2)
您可以运行多次INSERTS,但不能从一个INSERT
语句中插入两个表。
还要确保为外键获取带有LAST_INSERT_ID()
的最后一个插入ID,并在两个INSERTS之间使用分号;
答案 2 :(得分:2)
从它的外观来看,你要做的是:
wine
表格wine
表stock
表格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
连接