![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) ![]() ![]() |
mam następującą funkcję filtrującą w mysqli:
chciałbym napisać jednak kod z użyciem pdo(ponoć jest lepsze?) Jak odwzorować taka funkcje w pdo? wystarczy bindowanie? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
tak,wystarczy bindowanie.
mysqli też ma bindowanie. Jeśli masz już mysqli możesz zostać przy tym. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) ![]() ![]() |
tak wiem, aczkolwiek wszystkie artykuły w necie świadczą o tym że PDO jest obecnie lepsze
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
To z innej beczki. W czym PDO będzie dla Ciebie lepsze? Co ma PDO czego nie ma mysqli? (chodzi o funkcjonalność której użyjesz w PDO)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) ![]() ![]() |
Chce poprostu się podszkolić i przejść na coś innego
pytanie dwa: Jeśli na tabelach jest prefix to stosuje konstrukcje jak poniżej? czy jest jakiś inny zapis?
Ten post edytował eminiasty 12.12.2017, 22:07:12 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
PDO niestety nie obsługuje prefiksów tabel. Niektóre (pewnie większość) ORM-ów to robi. Poczytaj sobie o ORM.
Jeśli chodzi o PDO vs. MySQLi, to wybierz po prostu to, co Ci się bardziej podoba. Jedyną znaczącą różnicą jest to, że przesiadka z jednego systemu bazy danych na inny będzie znacznie łatwiejsza z PDO. W praktyce jednak pewnie zostaniesz przy MySQL. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) ![]() ![]() |
chyba ostatnie:
Mam kawalek kodu:
Chciałbym bindować parametry ale z użyciem funkcji:
Jak do takiej funkcji przekazć wartości $sth oraz $pdo / jak wywołać funkcje W przypadku mysqli przekazywalem $link przez parametr funkcji tu co bym robił nie działa. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Daruj sobie taką funkcję. Jeśli tak bardzo chcesz uniknąć podawania typu, to po prostu używaj wszedzie PDO::PARAM_STR (czyli domyślnej wartości, więc możesz pominąć całkowicie podawanie typu).
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) ![]() ![]() |
mimo to chciałbym poznać sposób co trzeba zrobić by taka funkcja zadziałała,w jaki sposób zdefiniować odpowiednie parametry
Notice: Undefined variable: sth in ... Notice: Undefined variable: pdo in ... Notice: Trying to get property of non-object in ... Fatal error: Uncaught Error: Call to a member function bindParam() on null in .. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
To są podstawy funkcji i obiektów. W PHP, funkcje nie mają dostępu do zmiennych spoza ich zasięgu. W wielu innych językach programowania jest inaczej.
Musisz przekazać to, czego chcesz użyć w funkcji, jako parametry. Tylko że tu jest mały problem, bo bindParam działa na referencji (w przeciwieństwie do bindValue), więc trochę bajzel się robi. Po prostu tak się nie "upiększa" kodu. Ewentualnie mógłbyś zrobić własną klasę dziedziczącą po PDO i tam dodać własną metodę, która by sama czytała typ. Nie widzę jednak sensu. Ale jak już się bawisz, to zobacz i przeanalizuj:
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Przekazać jako parametr funkcji.
-------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 11.09.2015 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj tak:
Komentarz zastąp tym swoim switchem (chociaż nie pochwalam używania switcha w taki sposób ). Zamiast bindParam wstawiłem bindValue - przeczytaj sobie jaka jest różnica. Poza tym nie potrzebujesz $pdo jako parametru, bo połączenie z bazą jest już znane w $sth. Innymi słowy, jest przechowywane jako stan $sth. Na Twoim obecnym etapie wiedzy te zależności mogą Cię trochę przytłaczać. Nie przejmuj się. Ten post edytował SmokAnalog 13.12.2017, 00:09:26 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 20:30 |