Problem z PDO, bindowanie parametrów, PDOStatement::execute(): SQLSTATE[HY093] |
Problem z PDO, bindowanie parametrów, PDOStatement::execute(): SQLSTATE[HY093] |
15.11.2012, 21:55:19
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 1 Dołączył: 22.08.2012 Ostrzeżenie: (0%) |
Witam,
mam problem. Wywala mi errora gdy (tak sądzę) próbuję zbindować parametry w takim oto sobie kodzie:
Dokładny kod błędu:
Nie ma co owijać w bawełnę, powiem że nie wiem zupełnie co ten błąd oznacza. Myślę że dobrze zbindowałem wartości ale skoro PHP wywala błąd to coś jest nie tak... Próbowałem różnych metod jednak żadna z "moich" nie działa... Prosiłbym o pomoc. Dziękuję za wszystkie odpowiedzi |
|
|
15.11.2012, 23:01:42
Post
#2
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) |
Ilość parametrów (parametry to ciąg znaków zaczynający się od dwukropka) podanych w $this->db->prepare(); musi być równa ilości bindowań.
W listingu na początku w liniach 6-11 masz ok, ale już w liniach 41-44 tak nie jest. |
|
|
15.11.2012, 23:55:46
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) |
funkcja "select" raczej nie powinna działać - nie chce mi się sprawdzać ale tam nie rozumiesz idei bindowania i to zapytanie mogłeś po prostu skleić jako tekst...
w funkcji "insert" masz jeden podstawowy błąd: Kod $values .= $values . $keyss . ' = ?, '; zdecyduj się na $values .= $keyss . ' = ?, '; lub $values = $values . $keyss . ' = ?, '; poza tym zastanawia mnie, czy nie powinno Ci zwrócić niepoprawne zapytanie - nie wiem czy na końcu INSERT może być przecinek i czy to poprawne, zrobił bym to raczej inaczej... dlaczego też w pętli zliczasz wielkość tablicy jak są do tego funkcje??... -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
16.11.2012, 20:26:18
Post
#4
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 1 Dołączył: 22.08.2012 Ostrzeżenie: (0%) |
@abort: Specjalnie dlatego zrobiłem while aby bindowała wszystkie parametry które są liczbami a nie ciągami znaków, jeżeli dobrze w php.net piszą to można wykorzystywać liczby zamiast stringów
@zegarek84: Rzeczywiście zrobiłem błąd, skoro dodaję wartość do stringa to nie dodaje tej samej wartości :/ I jakby co spójrz na funkcję substr, obcina ona końcówkę którą jest ", " Dzięki za odpowiedzi ==EDIT== @abort: A więc tak... strzeliłem faila. Miałem w kodzie napisać bindValue a napisałem bindParam ._. ==EDIT2== Tak czy siak nie działa... zastosowałem się do waszych poleceń i nadal "wywala błęda" :/ ==EDIT3== O matko już 3 edit... w każdym bądź razie popełniłem błąd, tu chodziło głównie o while, zmienna $i była zła, na początku powinna być 0 i przed wykonaniem bindowania powiększyć ją o jeden, w tym cała magia oraz problem. Ważne że sobie poradziłem i problem z głowy. Dzięki wszystkim za pomoc Ten post edytował MMySlime 16.11.2012, 20:51:12 |
|
|
16.11.2012, 21:05:28
Post
#5
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) |
To może inaczej, wrzuć ten kod:
I pokaż co wypluje. Druga sprawa: czy w linii 21 zaprezentowanego kodu nie masz czasem literówki? Ten post edytował abort 16.11.2012, 22:00:19 |
|
|
16.11.2012, 22:27:28
Post
#6
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 1 Dołączył: 22.08.2012 Ostrzeżenie: (0%) |
@abort: Dzięki ale już nie trzeba, poradziłem sobie gdyż był błąd w pętli while Zamiast $i = 1 powinno być 0 oraz przez bindem $i++, automatycznie to powiększało zmienną i usuwało problem.
==EDIT znowu== U mnie już nie ma błędu ale u ciebie jest Po $binds nie powinno być ' Ten post edytował MMySlime 16.11.2012, 22:33:41 |
|
|
16.11.2012, 22:44:24
Post
#7
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) |
|
|
|
Wersja Lo-Fi | Aktualny czas: 31.05.2024 - 19:22 |