У меня есть 3 таблицы: пользователя, студент, studentdetails первичного ключмножественной вставки в одной транзакции Mysqli php5
пользователя является внешним ключом для поля в таблице студента (идент) и первичном ключ студента является внешним ключом для поле в таблице studentdetails (studentid).
мне нужно вставить данные из одной формы для всех 3-х таблиц в одном представить следующее сценарий SQL:
$sql = "
INSERT INTO `tbluser`(`username`, `password`, `roleid`, `datecreated`)
VALUES ('$email','$password', '$role', CURRENT_TIMESTAMP);
SELECT @uid := MAX(`userid`) FROM `tbluser`;
INSERT INTO `tblstudent` (`userid`, `scholarnumber`, `firstname`, `middlename`,
`lastname`, `datecreated`)
VALUES ('@uid', '$scholar_no', '$first_name', '$middle_name', '$last_name',
CURRENT_TIMESTAMP);
SELECT @stuID := MAX(`studentid`) FROM `tblstudent`;
INSERT INTO `tblstudentdetails` (`studentid`,`dob`, `studenttype`, `gender`,
`religion`, `category`, `currentsuburbid`, `currentcityid`, `currentaddress1`,
`currentzipcode`, `currentstateid`, `currentcountryid`,`mobile`,`phone1`,`email1`,
`passportnum`, `permasuburbid`, `permaaddress1`, `dateofjoining`,
`admissionreferenceof`, `datecreated`, `dateupdated`)
VALUES ('@stuid', '$dob' ,'$studenttype' ,'$gender','$religion','$category',
'$currentsuburbid', ' $currentcityid', '$currentaddress1', '$currentzipcode',
'$currentstateid', '$currentcountryid', '$mobile',
'$phone1','$email1','$passportnum','$permanentsuburbid', '$permanentaddress1',
'$doj', ' $admissionreference',current_timestamp, current_timestamp);
";
Я не могу понять эту проблему, выше скрипт работает в MySQL (phpmyadmin), но в php это не работает. Я понимаю, мне нужно использовать multi_query (??), который я есть, но он не дает никаких ошибок и вставок в две таблицы, но не в третьем. Я чувствую, что это может быть связано с выражением SELECT между ними? В конце концов, я был бы очень признателен за любую помощь. Спасибо за кучи заранее.
Попытка выполнить несколько операторов SQL не является хорошей идеей. Разделите операторы на несколько вставок и выполните их отдельно. – GordonM
Я бы сделал отдельные инструкции SQL, чтобы иметь возможность управления и обработки ошибок. Но если вы считаете, что вам нужно сделать всю эту работу базы данных одним выстрелом, создайте хранимую процедуру, которая сделает все это. –