php - 同时向父子表插入数据

标签 php mysql stored-procedures

我这里有三张 table

 customer table
-----------------------------
|customer_id | customer_Name |
-----------------------------
product table
-----------------------------
| product_id | event_Name    |
-----------------------------
reservation table
----------------------------------------------------------------------
|reserve_id | customer_id | product_id | date_usage | motif | venue |
----------------------------------------------------------------------

问题是我想与父表同时将数据插入到保留表中。我将如何使用 PHP 来做到这一点?我在网上搜索过,对使用存储过程很感兴趣,但我不知道如何使用过程。 我将如何使用 php 编写此代码?提前致谢。

PHP 代码:

$price2 = $_POST['price1'];
$pack2 = $_POST['pack1'];
$name = $_POST['textinput11'];
$motif = $_POST['textinput22'];
$venue = $_POST['textinput44'];
$event2 = $_POST['events1'];
$currentdate = date('Y/m/d');


$reserve = mysql_query("INSERT INTO reservation_info(Event_Motif,Event_Venue,Date_Subtmitted,Date_of_Usage) VALUES('$motif','$venue','$currentdate','$date2')");
$customer = mysql_query("INSERT INTO customer(CustomerName) VALUES('$name')");
$product  = mysql_query("INSERT INTO product_t(Event_Type,Price) VALUES('$event2','$price2')");


if($customer & $product & reserve){
    echo "You have successfully reserved";
}

最佳答案

问题出在插入语句的顺序上。首先,您尝试在预订表(即子表)中插入一行,但您还没有 cudtomer_id。

将事务放在一边,首先插入客户表中以创建您的客户。根据您的代码,我相信 customer_id 是一个自动增量字段。因此,插入客户表后,调用 mysql_insert_id()函数检索新创建的客户 ID。

然后对产品表重复相同的操作。

最后,执行对预订表的插入,但这次使用您检索到的 2 个 ID 来在查询中显式提供客户和产品 ID。

注意1:不要使用mysql扩展,它已被弃用。请改用 mysqli 或 PDO。

注2:可以将上面的插入封装到一个事务中。在生产代码中,我鼓励您这样做,如果只是为了学习,那么还不需要费心。

关于php - 同时向父子表插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33215555/

相关文章:

php - 使用 PHP 连接字符串并用逗号分隔

php - ChargeBee - PHP 创建订阅中断 PHP 加载页面

mysql - 这在mySQL中可能吗

mysql - MySQL 中的计算

java - 在 Mule CE 3.5 (Anypoint) 中执行 MSSQL 存储过程

php - 使用 cURL 通过 POST 和 MULTIPART/FORM-DATA 执行流(逐行)文件上传

php - 简单的 PHP 和 SQL 查询 - 更新值

php - 无法从我的 mysql 数据库中选择

php - 无法插入数据 php mysql - 整数

java - 将数据从 Oracle 存储过程传递到 Java