У меня есть запрос, который вводит пользователя. После вставки я хочу использовать значение «mysqli_insert_id» для использования в нескольких запросах для сохранения предпочтений для пользователя.Выполнять многострочные запросы после вставки
В нескольких запросов у меня есть, возвращение «Запрос был пустой», и ничего не будет вставлено в БД (ну, пользователь, но это она)
Что плохого в части ниже? Что мне не хватает?
include('../../config.php');
$query = "INSERT INTO users(
name)
VALUES(
'$name')";
$result = mysqli_query($db, $query) or die(mysqli_error($db));
if($result){
$userId = mysqli_insert_id($db);
$query2 = '';
foreach ($tasks as $taskId) {
$query2 .= "INSERT INTO
usertaskpreferences (user_id, task_id)
VALUES ('$userId', '$taskId');";
}
foreach ($shifts as $shiftId) {
$query2 .= "INSERT INTO
usershiftpreferences (user_id, shift_id)
VALUES ('$userId', '$shiftId');";
}
$query2 = substr($sql2, 0, -1); //remove last ';'
$result2 = mysqli_multi_query($db, $query2) or die(mysqli_error($db));
echo 'success';
}
основной отладки, запуска echo'ing переменные –
Не используйте ' multi_query'. Используйте один запрос с несколькими списками VALUES: VALUES ('$ userId', 'task1'), ('$ UserId', 'task2'), ('$ userId', 'task3') ' – Barmar
Я сделал несколько отладка с эхом, но комбинация ошибок (неверные данные для цикла и некоторые неуместные имена столбцов) помешала мне получить хорошую обратную связь. Принятый ответ снова вернул меня на правильный путь. Единственный запрос интересен, спасибо за понимание :-) –