Mam w formularzu taki kod:
<fieldset>
<legend>Przypisz nowe zawody:</legend>
<input type="hidden" name="zawody[]" value="0">';
echo self::sql_notInOccupations($pesel);
</fieldset>
Dalej robię insert tablicy do bazy:
$query2 = "Insert into workers_occupation (lev0, pesel) values (?,?)";
$stmt2 = $db->prepare($query2);
if($stmt2 == true)
{
foreach ($wykaz_zawodow as $occupation)
{
$stmt2->bind_param('ss', $occupation, $pesel);
$stmt2->execute();
$stmt2->store_result();
}
}
Log sql wygląda tak, gdy został zaznaczony jeden chceckbox 'Kierowca'
529 Prepare INSERT INTO workers_occupation (lev0, pesel) VALUES (?,?)
529 Execute INSERT INTO workers_occupation (lev0, pesel) VALUES ('Kierowca','1305420057')
Gdy nie zaznaczę żadnego checkbox-a , mysql tylko przygotowuje zapytanie, ale go nie wykonuje log, sam prepare:
529 Prepare INSERT INTO workers_occupation (lev0, pesel) VALUES (?,?)
529 Prepare INSERT INTO workers_skills (lev0, pesel) VALUES (?,?)
....
Natomiast gdy chce usunać jakiś rekord z bazy execute zawsze wykonuje się dwa razy:
<fieldset>
<legend>Przypisz nowe zawody:</legend>
<input type="hidden" name="zawodyusun[]" value="0">';
echo self::sql_InOccupations($pesel);
</fieldset>
$query7 ="Delete From workers_privilages Where shortname=? and pesel=?";
$stmt7 = $db->prepare($query7);
if ($stmt7 == true)
{
foreach ($wykaz_uprawnienia_usun as $usun_uprawnienie)
{
$stmt7->bind_param('ss',$usun_uprawnienie,$pesel );
$stmt7->execute();
$stmt7->store_result();
}
}
539 Prepare Delete From workers_occupation Where lev0=? and pesel=?
539 Execute Delete From workers_occupation Where lev0='0' and pesel='1305420057'
539 Execute Delete From workers_occupation Where lev0='Kierowca' and pesel='1305420057'
Dlaczego w tym przypadku execute wykonuje się dwa razy ?