2015-03-24 4 views
0

У меня есть две функции PHP, которые должны выполняться одновременно. Мне нужно использовать две разные функции, потому что, например, я создаю курс в своем приложении и в то же время добавляю несколько домашних заданий для своих учеников. Вот мой упрощенный код:Вставить, получить идентификатор и вставить одновременно

function createCourse($courseName) { 
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("INSERT INTO courses (name) VALUES (?)"); 
    $stmt->bind_param("s", $courseName); 
    $result = $stmt->execute(); 
    $stmt->close(); 
    return $result; 
} 

function addHomeworkToCourse($homeworkDescription) { 
    global $mysqli,$db_table_prefix; 
    $course = "13"; // Here comes the problem: how do I get the ID inserted in the previous function 
    $stmt = $mysqli->prepare("INSERT INTO homework (course, description) VALUES (?, ?)"); 
    $stmt->bind_param("is", $course, $homeworkDescription); 
    $result = $stmt->execute(); 
    $stmt->close(); 
    return $result; 
} 

и форма для создания курса и добавить некоторые домашние задания к нему в той же странице:

createCourse("Maths"); 
addHomeworkToCourse("Resolve this equation"); // Add some homework to "Maths" 

Спасибо за ваше время! (Обратите внимание, что я не эксперт PHP, MySQL и английский)

+1

и то, что вопрос? –

+1

Могли бы вы изменить первую функцию, чтобы вернуть идентификатор последней строки, вставленной в случае успеха. Затем вы можете передать это значение во вторую функцию. http://php.net/manual/en/mysqli.insert-id.php. Вам нужно будет изменить вторую функцию, чтобы добавить еще один аргумент, который будет идентификатором курса, для которого вы добавляете описание домашней работы. – Maximus2012

+0

@ Maximus2012 Я попробовал mysqli_insert_id, но ничего не ответил (я не знаю, что я делаю что-то не так) –

ответ

2
$id = createCourse("Maths"); 
addHomeworkToCourse($id, "Resolve this equation"); 

имеют createCourse возвращают идентификатор курса с последним вставленным id.

php.net/manual/en/mysqli.insert-id.php

Это также сделает способ добавить HomeworkToCourse/функцию более надежной и может быть использован в различных ситуациях

+0

Большое спасибо! –

0

С mysql вы можете использовать функцию PHP mysqli_insert_id (docs), чтобы получить последний вставленный идентификатор курса, то вы можете добавить домашнее задание к нему ,

+0

Я stealth отредактировал мою опечатку прямо перед тем, как вы прокомментировали. Ссылка всегда указывала на версию mysqli в документах – Scopey

+0

... и я скрытно удалил комментарий. –

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