Вы не можете выполнить несколько операторов в подготовленном запросе :
Синтаксис SQL для подготовленных операторов не поддерживает несколько операторов (то есть несколько операторов в одномстрока, разделенная; символами)
, поэтому вам нужно будет подготовить и выполнить каждый запрос отдельно, используя mysqli_stmt::insert_id
, чтобы получить соответствующее значение id
для второго и третьего запросов:
$sql = "INSERT INTO `user_info`(`first_name`, `last_name`, `phone`, `cpf`)
VALUES (?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssss', $firstName, $lastName, $phone, $cpf);
$stmt->execute();
$insert_id = $stmt->insert_id;
$stmt->close();
$sql = "INSERT INTO `{$table}`(`email`, `password`, `active`,`user_info_id`, `created`, `role_id`" . $restaurantInsert . ")
VALUES (?, ?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssiisss', $email, $password, 1, $insert_id, $created, $role, $restaurantValue);
$stmt->execute();
$stmt->close();
$sql = "INSERT INTO `address`(number, street, city, state, zip, district, country, created, user_info_id)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);";
$stmt = $conn->prepare($sql);
$country = 'BR';
$stmt->bind_param('sssssssi', $number, $street, $city, $stateCode, $zip, $district, $country, $created, $insert_id);
$stmt->execute();
$stmt->close();
Примечание. Я не уверен на 100%, чего вы пытаетесь достичь с помощью <code>role_id
". $ RestaurantInsert." , вам может потребоваться соответствующим образом отредактировать второй запрос, чтобы использовать его.