[PHP][SQL][MySQL]prepare & mysqli |
[PHP][SQL][MySQL]prepare & mysqli |
17.08.2017, 20:33:56
Post
#1
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) |
Czy poniższy kod da się jakoś uprościć i czy w ogóle jest poprawny?
|
|
|
17.08.2017, 20:48:09
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
1. Nie musisz bindować wartości zmiennej, którą zadałeś na sztywno w kodzie.
2. Czy id w tabeli jest unikalne? Jeśli tak, to dodaj LIMIT 1 do zapytania. Pobieranie rekordów w pętli również nie jest potrzebne jeśli odpowiedź jest twierdząca. No i jeśli faktycznie id jest unikalne, to możesz uprościć cały kod do: -------------------- |
|
|
18.08.2017, 08:09:03
Post
#3
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) |
Chodzilo mi wlasnie o wzor zapytan z bindowaniem. Gdyz wczesniej uzywalem mysqli ale bez prepare co bylo chyba bledem. Rozumiem ze jesli jest uniaklny rekord to nie uzywac bindowania. Ale jesli rekordow jest wiele? To jak je zwracac? Jak zrobic by nie bylo ich w kodzie? Jak to zrobic by bylo proste w odczytaniu?
|
|
|
18.08.2017, 08:19:35
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Bindowania używasz wszędzie tam, gdzie dane pochodzą z niepewnego źródła (plus odpowiednie kodowanie). W praktyce lepiej używać zawsze - za jakiś czas, pracując w grupie, ktoś może wpaść na pomysł podmiany zmiennej z bezpiecznej na niepewną i leżysz. Moim zdaniem lepiej też od razu przyzwyczajać się do PDO zamiast mysqli. Jest wszędzie używane.
-------------------- |
|
|
19.08.2017, 12:58:27
Post
#5
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) |
Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in Ktoś podpowie o co tu chodzi? Czy date binduje sie jako s - string? Czy wogle sie nie binduje? |
|
|
19.08.2017, 13:01:50
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A nie jest szybciej zerknąć na Google niż pisać post tu i czekać na odpowiedź?
https://www.google.com/search?q=Fatal+error...)+on+boolean+in Datę binduje się jako string. -------------------- |
|
|
19.08.2017, 13:19:59
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Czemu active jest stringiem?
https://dev.mysql.com/doc/refman/5.7/en/num...e-overview.html Szukaj BOOL, BOOLEAN -------------------- |
|
|
19.08.2017, 13:40:37
Post
#8
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) |
Tak jest w porządku, ale czy tego id nie powinno się jakoś też zbindować? |
|
|
19.08.2017, 13:43:58
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Jeśli id jest auto increment to powinno się pominąć.
-------------------- |
|
|
19.08.2017, 13:53:28
Post
#10
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) |
Odnośnie $active, pole w bazie jest typu tinyint(i)
W form jest:
Czy da sie tu użyć bindowania jako b wgole? Pytam dlatego, że do bazy zwraca zawsze 0? Ten post edytował eminiasty 19.08.2017, 14:02:40 |
|
|
19.08.2017, 14:02:32
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Nie rzuca ci się w oczy że coś jest nie tak? Y-m-d H:m:s albo miesiąc, albo minuta. Sprawdź dokumentację i zobacz od razu 'c'. Boolean możesz odpowiednio przetworzyć np przez filter_var. #1 pewnie kolejny głupi błąd gdzieś w kodzie.
-------------------- |
|
|
19.08.2017, 16:22:26
Post
#12
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) |
|
|
|
19.08.2017, 16:25:41
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A w jaki sposób chciałbyś bindować rekordy?
-------------------- |
|
|
19.08.2017, 16:49:00
Post
#14
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) |
WHERE cos=? , cos =?
i tak wszystki po kolei? nie mam pomyslu wlasnie I jeszcze jedno poz tematem bo nie rozumiem pewnej rzeczy.Tzn. Zapytanie dziala poprawnie, ale kompilator pokazuje je na czerwono:
Gdy poprawie je tak: (spacja po from)
jest porzadku to samo mam z
przecież jak potem nawet robie dump z zapytania to jest FROM`costam` bez spacji? i to jest niby dobrze? wlasnie przezucilem sie na phpstroma, pierwszy raz widze taki problem? |
|
|
19.08.2017, 17:06:26
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Przeczytaj jeszcze raz mój 4 post. W stopce mam artykuł o PDO który pokazuje bindowanie. where używasz jak masz warunek konkretny a nie zawsze.
-------------------- |
|
|
20.08.2017, 21:17:53
Post
#16
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) |
rozumiem, a co ze spacjami?
|
|
|
Wersja Lo-Fi | Aktualny czas: 28.03.2024 - 13:37 |