<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 ?