2015-10-20 3 views
2

Я работаю над системой начисления заработной платы. Администратор может успешно сохранить эти data, но когда выбран идентификатор сотрудника, который уже находится в базе данных, он не добавляется в базу данных. Вот мой код:Не вставлять значения в базу данных, если данные аналогичны

$sql = "INSERT INTO payroll VALUES('$id','$period','$paidDays','$hourlyRate','$hoursworked','$overtime','$overtimePay','$undertime','undertimePay','$sss','$philHealth','$pagibig','$OtherDeductions','$tax','$grossPay','$netPay')";

мне нужно решить эту проблему, чтобы быть в состоянии сделать историю зарплаты сотрудников.

ОБРАТИТЕ ВНИМАНИЕ, что этот код работает. Просто при вводе такого же сотрудника он не добавляется в базу данных. Благодаря!

EDITED: Это table structure

+0

И вы хотите, чтобы его добавили в базу данных? или вы намереваетесь избежать этого? – Sina

+0

@ Сина, я считаю, она хочет добавить в базу данных, так как он хочет иметь «Историю зарплаты». Вы случайно указали эту колонку «Уникальный индекс»? – Mustafa

+0

Привет Сина! Да, он должен быть добавлен в базу данных. –

ответ

0

Я предполагаю, что '.... похож работник ...' определяется ID, и это может дать вам советы:

Insert Into Payroll 
Select id,period,paidDays,hourlyRate,hoursworked, overtime,overtimePay, 
undertime,undertimePay,sss,philHealth,pagibig,OtherDeductions, 
tax,grossPay,netPay 
FROM (
select '$id' AS ID,'$period' AS period,'$paidDays' AS paidDays, 
'$hourlyRate' AS hourlyRate, '$hoursworked' AS hoursworked, 
'$overtime' AS overtime,'$overtimePay' AS overtimePay, 
'$undertime' AS undertime,'undertimePay' AS undertimePay, 
'$sss' AS sss,'$philHealth' AS philHealth,'$pagibig' AS pagibig, 
'$OtherDeductions' AS OtherDeductions,'$tax' AS tax, 
'$grossPay' AS grossPay,'$netPay' AS netPay, 0 AS JUM 
    UNION ALL 
    select id,period,paidDays,hourlyRate,hoursworked, overtime, 
    overtimePay, undertime,undertimePay,sss,philHealth,pagibig, 
    OtherDeductions,tax,grossPay,netPay, 1 AS JUM 
    from [YourTable] 
    Where [ID] = [EmployeeID]) AS T 
    GROUP BY id,period,paidDays,hourlyRate,hoursworked, overtime, 
    overtimePay, undertime,undertimePay,sss,philHealth,pagibig, 
    OtherDeductions,tax,grossPay,netPay 
    HAVING SUM(JUM) <0 
1

Посмотрите на свою структуру таблицы. Идентификатор должен быть PRIMARY KEY, поэтому его нельзя добавить при выборе существующего идентификатора.
Поскольку первичный ключ не может быть дублирован, поэтому, если вы хотите иметь этот процесс, структура должна быть изменена.

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