[PHP]Bindowanie - czy dobrze to robię? |
[PHP]Bindowanie - czy dobrze to robię? |
10.01.2023, 11:38:00
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 481 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Cześć.
Mam taką metodę bind w klasie DB:
W formularzu przesyłam checkboxy, wszystkie z tej samej tablicy, powiedzmy name="boxChecked[]". I teraz chcę usunąć te rekordy z bazy w których ID mam przesłane w $_POST['boxChecked'] Robię to tak: Ten kod działa. Moje pytanie: Czy to jest po bożemu zrobione? Czegoś brakuje? Z tego co się orientuję to dane z POST z checkboxa to tablica stringów, więc typowanie na int by sie przydało w metodzie massDelete, tak? Czy to >>> $row = (int) $row; wystarczy? -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
10.01.2023, 12:02:38
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Nie wiem czy masz założone więzy integralności na tych dwóch tabelach, ale gdyby były to wystarczy usuwanie produktu - dzięki więzom integralności zostaną usunięte właściwości bez potrzeby usuwania ich po stronie PHP.
Zamiast pętli for zastosowałbym usuwanie z użyciem klauzuli IN i bez użycia metody bind - id i tak masz integer. -------------------- |
|
|
10.01.2023, 12:13:55
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 481 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Nie wiem czy masz założone więzy integralności na tych dwóch tabelach, ale gdyby były to wystarczy usuwanie produktu - dzięki więzom integralności zostaną usunięte właściwości bez potrzeby usuwania ich po stronie PHP. Rozumiem. Nie porobiłem więzów integralności. Ale to moje niedopatrzenie. A gdyby były to wystarczy że wykonam drugie zapytanie (usuwanie z `product`) a zapytanie pierwsze wykona się samo po stronie serwera mysql?bez użycia metody bind - id i tak masz integer. No w sumie racja.Zamiast pętli for zastosowałbym usuwanie z użyciem klauzuli IN Np tak?Kod delete from t O to Ci chodziło? W sumie chyba jest to bardziej wydajne niż oddzielne zapytania per iteracja pętli.
where id in (1, 4, 6, 7) Ten post edytował sadistic_son 10.01.2023, 12:15:58 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
10.01.2023, 12:16:52
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Tak.
Tak. Sprawdź jednak czy każde id jest integer, powinno być, ale nie musi. Ten post edytował trueblue 10.01.2023, 12:18:08 -------------------- |
|
|
10.01.2023, 12:27:14
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 481 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Ok, dzięki.
Tylko jeszcze trzeba wtedy te IDki z checkboxa jakoś wyczyścić. Czy to tak może być?
-------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
10.01.2023, 12:36:53
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Dopisałem w poście wcześniejszym (do tego jest array_filter).
Dlaczego foreach? Od tego jest implode. -------------------- |
|
|
10.01.2023, 12:49:41
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 481 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Dopisałem w poście wcześniejszym (do tego jest array_filter). Tutaj w tym temacie? Wybacz , ale nie dopisałeś Dlaczego foreach? Od tego jest implode. A no racja. Prościej. Dzięki!EDIT: Ale chwila. A jak teraz ma wyglądać upewnienei się, że mam same INTy w wartościach do bazy?
EDIT2: myślę, że tak będzie dobrze: Zgadza się? Ten post edytował sadistic_son 10.01.2023, 12:55:53 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
10.01.2023, 12:56:22
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Tutaj w tym temacie? Wybacz , ale nie dopisałeś Dopisałem w poście #4. Ale chwila. A jak teraz ma wyglądać upewnienei się, że mam same INTy w wartościach do bazy? A o tym w poście #6. -------------------- |
|
|
10.01.2023, 12:59:38
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 481 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Ok, wszystko jasne. Ale array_map też robi robotę
Dzięki za pomoc. -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 17:33 |