Хороший день,PHP и MySQLi множественная вставка - Ошибка
У меня трудности с MySQLi несколькими вставками. У меня есть этот db, который состоит из 6 разных таблиц, каждый из которых имеет eid
как foreign key
от employees
. Вот список таблиц: employees
(который конечно держит primary key
для eid
), затем contact
, education
, job_desc
, work_history
, familybg
Что у меня возникают проблемы с когда я попытался вставить данные взяты из форм страницы индекса в insert.php, где вызывается функция MySQLi. Вы могли видеть код ниже:
[ПРИМЕЧАНИЕ: Следующие атрибуты просто манекен.]
insert.php (пересмотренная)
include('db.php');
//build sql statements
<?php
$sql1 = "INSERT INTO employee (fname,mname,
lname,age,
gender,birthday,
birthplace,citizenship,
status,sss,
philhealth,tin,
height,weight)
VALUES
('$fname','$mname','$surname',
'$age','$gender',
'$birth','$place',
'$citizen','$civil',
'$ss','$phil','$tin',
'$height','$weight')";
$r1 = mysqli_query($db,$sql1);
$id = mysqli_insert_id($db);
$sql2 = "INSERT INTO contact (eid,address,province,postcode,telno,mobile,email,alternate)
VALUES('$id','$address','$province','$postcode','$tel','$mob','$email','$alter')";
$sql3 = "INSERT INTO educ (eid,elem,egrad,highschool,hgrad,college,cgrad) VALUES ('$id','$elem','$egrad','$high','$hgrad','$col','$cgrad')";
$sql4 = "INSERT INTO employment (eid,position,status,hireDate,job_desc,basic,salary) VALUES ('$id','$pose','$stat','$hstart','$dept','$pay','$salary')";
$sql5 = "INSERT INTO work (eid,company_name,position,desc,startDate,endDate) VALUES ('$id','$prev','$pold','$job','$sdate','$edate')";
$sql6 = "INSERT INTO family (eid,fatherName,motherName,sibling,spouse,children) VALUES ('$id','$dad','$mom','$kname','$spouse','$child')";
//returns 1 if sucessful and 0 if not
//mysqli_query($link,$query)
$r2 = mysqli_query($db,$sql2) or die(mysqli_error($db));
$r3 = mysqli_query($db,$sql3) or die(mysqli_error($db));
$r4 = mysqli_query($db,$sql4) or die(mysqli_error($db));
$r5 = mysqli_query($db,$sql5) or die(mysqli_error($db));
$r6 = mysqli_query($db,$sql6) or die(mysqli_error($db));
$sqlResult = $r2 && $r3 && $r4 && $r5 && $r6;
//commit the queries if no errors otherwise rollback
if(!$sqlResult){
//sqlResult = 0, thus there was a problem
mysqli_rollback($db);
echo "ERROR: Could not save data!";
}else{
//sqlResult = 1, no problem
mysqli_commit($db);
echo "Record saved!";
}
mysqli_close($db);
?>
Выходные показывает: ERROR: Could not save data!
, когда я попытался запустить программа. Это подразумевает, что оператор insert не может продолжаться и, таким образом, возвращается к mysqli_rollback(); Сначала я подумал, что, возможно, это имеет какое-то отношение к цитатам, но после десятка случаев проверки, наконец, я не вижу в этом виновника. Но если это не проблема, то интересно, что это было? Вы знаете, что я новичок в MySQLi. Поэтому, если кто-то, кто имеет более широкие знания об этом и даст мне несколько советов, будет оценен по достоинству.
(ток) Выпуск № 2:
После серии отладки, то mysqli multiple insert
наконец работает за исключением внешнего ключа. Когда я проверил таблицу на contact
, которая находится рядом с таблицей employees
, столбец для eid
успешно записал точное значение eid
таблицы employees
, но в остальной части таблицы отображается 0 для eid
. Кто знает, как с этим бороться? Заранее спасибо.
ПРИМЕЧАНИЕ. Kindle проверил пересмотренный код выше, чтобы увидеть изменения и увидеть текущую проблему, имеющуюся у кодов.
Вы должны использовать подготовленные заявления. Можете ли вы узнать, какое из операторов дает ошибку? – Jens
@ У меня теперь проблемы с mysqli_insert_id(): 'похоже, что он не получил значение из исходной таблицы eid. Вот почему, кроме таблицы 'employee', ничего не отображается. Даже если бы я сделал это так: mysqli_insert_id ($ db); ' теперь что делать? – Archangel08