2016-12-15 7 views
1

У меня есть запрос, который вводит пользователя. После вставки я хочу использовать значение «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'; 
} 
+0

основной отладки, запуска echo'ing переменные –

+1

Не используйте ' multi_query'. Используйте один запрос с несколькими списками VALUES: VALUES ('$ userId', 'task1'), ('$ UserId', 'task2'), ('$ userId', 'task3') ' – Barmar

+0

Я сделал несколько отладка с эхом, но комбинация ошибок (неверные данные для цикла и некоторые неуместные имена столбцов) помешала мне получить хорошую обратную связь. Принятый ответ снова вернул меня на правильный путь. Единственный запрос интересен, спасибо за понимание :-) –

ответ

2

Вы используете неправильное, вероятно, пустой, переменная $sql2

$query2 = substr($sql2, 0, -1); //remove last ';' 
       //^here it should be $query2 

Так это будет выглядеть

$query2 = substr($query2, 0, -1); //remove last ';' 
+0

Так оно и было, спасибо :-) Я был эхо-варов, который кажется пустым, поэтому я подумал, что по какой-то причине невозможно было эхо-SQL-операторов , Но, очевидно, вы можете, потому что это струны. –

+0

Да, это правильно! Вы приветствуете чувака – Fabio

Смежные вопросы