![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Chcę się przerzucić na PDO i już pierwszy śmieszny problem. Byłem pewien, że z PDO łatwo mi pójdzie INSERT lub UPDATE na podstawie podanego arraya, robię więc coś takiego:
I otrzymuję błąd: Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in ... Czyżbym musiał to przekształcać na zwykłą, płaską tablicę, bez powiązanych nazw typu 'name'='coś tam'? Czy może da się inaczej? W mojej klasie StationItem przechowuję po prostu zmienną $data która zawiera array typu "name"="coś tam", "formatType"="coś innego" i chciałbym bezproblemowo ją odczytywać z bazy danych i tam zapisywać. Ten post edytował konrados 1.03.2011, 11:19:25 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A tak:
$sqlPrep->execute(array_values($data)); ? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ale Ty szybki jesteś
![]() Działa. A da się jakoś tak zrobić w jednej linijce, by nie trzeba było podawać nazw pól w funk. "prepare" ani tych znaków zapytania, skoro wszystkie te informacje są już mojej tablicy $data? Aha i drugie pytanie: skoro już się bawię w te prepared statements, to już się nie muszę bawić w czyszczenie danych w $data wprowadzonych przez usera, tak? Mam na myśli możliwe sql injection. Ten post edytował konrados 1.03.2011, 11:37:32 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jeśli Twoje zapytanie będzie zawsze tak wyglądało, to możesz napisać funkcję, w której dynamicznie będziesz budował te zapytanie na podstawie $data. Nie widzę żadnego problemu.
Cytat Mam na myśli możliwe sql injection. Tak, prepared statement cię przed tym zabezpiecza. Nie mniej jednak ja tam zawsze liczby rzutuje na liczby - tak dla porządku ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
OK, dzięki!
Update: ale już tworzę następny wątek ![]() Ten post edytował konrados 1.03.2011, 12:44:34 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.06.2025 - 05:32 |