Php 使用2个mysql查询从1个html表单更新2个表

Php 使用2个mysql查询从1个html表单更新2个表,php,mysql,Php,Mysql,我正在尝试使用1个表单更新数据库中的2个表。在执行查询之前,会发生一些事情: 使用其phoneNum搜索customers表以查看它们是否存在 如果存在匹配项,它将使用customer表中的名称、地址、phoneNum填充预订表单。如果没有匹配项,则表单字段保持为空 点击提交,预订表单中的值将发布到addbooking.php addbooking.php中的第一个查询要么插入新客户(如果在以前的搜索中没有匹配的客户),要么更新现有记录(如果有匹配的客户) 第二个查询应使用相同的值将记录添加到作

我正在尝试使用1个表单更新数据库中的2个表。在执行查询之前,会发生一些事情:

  • 使用其phoneNum搜索customers表以查看它们是否存在
  • 如果存在匹配项,它将使用customer表中的名称、地址、phoneNum填充预订表单。如果没有匹配项,则表单字段保持为空
  • 点击提交,预订表单中的值将发布到addbooking.php
  • addbooking.php中的第一个查询要么插入新客户(如果在以前的搜索中没有匹配的客户),要么更新现有记录(如果有匹配的客户)
  • 第二个查询应使用相同的值将记录添加到作业表中
  • 第一个查询在执行插入或更新时正常工作
  • 如果客户存在,则第二个查询有效;如果必须创建客户,则第二个查询不起作用
  • 问题在于从表单传递的cutomerId。如果cutomerId是从表单传递的(意味着它们存在),则第二个查询将工作。如果它们不存在,则不会传递任何内容,但第一个查询会创建一个新客户,从而生成一个新的customerId

    所以我的问题是如何从第一个查询中获取customerId并在第二个查询中使用它?我有所有的代码,但希望我已经解释了足够的问题,查询本身就足够了。非常感谢

        $query1 =   "INSERT INTO customer (customerId, name, address, phoneNum)" . 
                "VALUES ( '$customerId','$name', '$address', '$phoneNum')" .
                "ON DUPLICATE KEY UPDATE name='$name', address='$address', phoneNum='$phoneNum'";
    
    $result = mysqli_query($dbc, $query1)
    or die('Error adding new customer.');
    //edit as per Jessica
    $customerId = mysqli_insert_id($dbc);
    
    $query2 = "INSERT INTO job (jobType, carType, customerId, phoneNum, name, address, destAdd, bookingDate, BookingTime)" . 
                "VALUES ('$jobType', '$carType', '$customerId', '$phoneNum', '$name', '$address', '$destAdd', '$bookingDate', '$bookingTime')";
    
    $result = mysqli_query($dbc, $query2)
    or die('Error adding booking.');
    


    PS:你到底为什么在查询中插入原始数据而不是使用参数

    他正在使用mysqli,这就是为什么不使用parameters.Oops是如此愚蠢。我错了。我以为他在用MySQL。哈哈+1不管怎样。@Jessica,谢谢你现在起作用的帮助。我是MySQL的新手,所以我在上面使用的方法是我在大多数书籍中找到的方法。如果有更好的方法,我愿意修改代码。。正如评论中提到的,我确实改变了其中的一部分,以使用MySQLi。因此,下一步是使用准备好的语句:@Jessica,我测试了原始问题,如上所述,您的代码修复了它,但如果客户已经存在,则第二个查询将不会运行,这意味着它不能反向工作。这是因为您的行更改了customerID,因此不再传递有效值?现在有没有办法解决这两个问题,或者我是否错误地使用了您的代码?非常感谢,伊欧。
    $customerId = mysqli_insert_id($dbc);