Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Call to a member function prepare()
Vertisan
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Witam!
mam taki skrypt (modal z Bootstrap'a):
  1. <div class="modal fade" id="edycja1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  2. <div class="modal-dialog">
  3. <div class="modal-content">
  4. <?php
  5. $STMedytuj = $dbh->prepare(" SELECT * FROM `szs_service` WHERE ID = $id "); // LINIA 12
  6. $STMedytuj->execute();
  7. while($row = $STMedytuj->fetch()) {
  8. ?>
  9. ...

dalej jest formularz odnoszący się do pliku:
  1. include('configPDO.php');
  2. if(isset($_POST["srv_edytuj"]) == "Edytuj serwis")
  3. {
  4.  
  5. $nazwa = $_POST[srv_nazwa];
  6. $sprzet = $_POST[srv_sprzet];
  7. $akcesoria = $_POST[srv_akcesoria];
  8. ...
  9.  
  10. $STM_update = $dbh->prepare(
  11. "UPDATE szs_service SET Nazwa:Nazwa, Imie:Imie, Nazwisko:Nazwisko, Telefon:Telefon, Usterka:Usterka, Dodatkowe:Dodatkowe, Sprzet:Sprzet, Akcesoria:Akcesoria, Przyjmujacy:Przyjmujacy WHERE ID=:ID");
  12.  
  13. $STM_update->bindParam(':Nazwa', $nazwa);
  14. $STM_update->bindParam(':Imie', $imie);
  15. ...
  16. $STM_update->execute();
  17. header( "location:AdminIndex.php?ServiceUpdate=77083368");
  18. }


i w linii 12 (zaznaczona) występuje błąd:
Fatal error: Call to a member function prepare() on a non-object in ...

Normalnie modal pobiera dane dla danego ID, ale gdy je zmienie i chcę wysłać poprzez UPDATE to zwraca błąd
Wie ktoś może co jest nie tak?

Ten post edytował Vertisan 6.01.2015, 15:06:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
KsaR
post
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


Nie masz zdefiniowanej zmiennej $dbh lub zwraca null.

popraw na to jeszcze:
  1. $STMedytuj = $dbh->prepare('SELECT * FROM `szs_service` WHERE `ID` = :id'); // LINIA 12
  2. $STMedytuj->bindParam(':id', $id, PDO::PARAM_INT);
  3. $STMedytuj->execute();
  4. #(...)
  5. //zawsze dodawaj apostrofy przy tablicach, chyba ze sa indeksowane numerycznie
  6. $nazwa = $_POST['srv_nazwa'];
  7. $sprzet = $_POST['srv_sprzet'];
  8. $akcesoria = $_POST['srv_akcesoria'];


Ten post edytował Ksar 6.01.2015, 15:10:04
Go to the top of the page
+Quote Post
Vertisan
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Cytat(Ksar @ 6.01.2015, 15:06:20 ) *
Nie masz zdefiniowanej zmiennej $dbh lub zwraca null.

popraw na to jeszcze:
  1. $STMedytuj = $dbh->prepare('SELECT * FROM `szs_service` WHERE `ID` = :id'); // LINIA 12
  2. $STMedytuj->bindParam(':id', $id, PDO::PARAM_INT);
  3. $STMedytuj->execute();
  4. #(...)
  5. //zawsze dodawaj apostrofy przy tablicach, chyba ze sa indeksowane numerycznie
  6. $nazwa = $_POST['srv_nazwa'];
  7. $sprzet = $_POST['srv_sprzet'];
  8. $akcesoria = $_POST['srv_akcesoria'];


Dalej ten sam błąd

$dbh jest zdefiniowane, wcześniej jest dołączany plik z konfiguracją bazy
Normalnie mi SELECT pobiera dane do modala (uzupełnia input'y, textarea, itd.) ale jak je chce zmienić i wysłać poprzez UPDATE to zwraca ten błąd
Go to the top of the page
+Quote Post
KsaR
post
Post #4





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


Cytat(Vertisan @ 6.01.2015, 15:11:59 ) *
Dalej ten sam błąd

$dbh jest zdefiniowane, wcześniej jest dołączany plik z konfiguracją bazy
Normalnie mi SELECT pobiera dane do modala (uzupełnia input'y, textarea, itd.) ale jak je chce zmienić i wysłać poprzez UPDATE to zwraca ten błąd

Nie przypatrzylem sie drugiemu plikowi,
W zapytaniu zrob =: zamiast : i przekaz odpowiednie parametry bo tylko dwa dostarczasz.
Go to the top of the page
+Quote Post
Vertisan
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Cytat(Ksar @ 6.01.2015, 15:16:02 ) *
Nie przypatrzylem sie drugiemu plikowi,
W zapytaniu zrob =: zamiast : i przekaz odpowiednie parametry bo tylko dwa dostarczasz.


Nie przekazuje tylko 2, tylko specjalnie obciąłem żeby za dużo kodu nie wrzucać (IMG:style_emoticons/default/wink.gif)
Poprawiłem i... lipa :/
Żeby było prościej, cały kod do UPDATE:
  1. <?php
  2.  
  3. include('configPDO.php');
  4.  
  5. if(isset($_POST["srv_edytuj"]) == "Edytuj serwis")
  6. {
  7.  
  8. $nazwa = $_POST['srv_nazwa'];
  9. $sprzet = $_POST['srv_sprzet'];
  10. $akcesoria = $_POST['srv_akcesoria'];
  11. $opis = $_POST['srv_opis'];
  12. $dodatkowe = $_POST['srv_dodinfo'];
  13. $imie = $_POST['srv_imie'];
  14. $nazwisko = $_POST['srv_nazwisko'];
  15. $telefon = $_POST[srv_telefon];
  16. $pracownik = $_POST['srv_pracownik'];
  17.  
  18. $STM_update = $dbh->prepare("UPDATE szs_service SET Nazwa=:Nazwa, Imie=:Imie, Nazwisko=:Nazwisko, Telefon=:Telefon, Usterka=:Usterka, Dodatkowe=:Dodatkowe, Sprzet=:Sprzet, Akcesoria=:Akcesoria, Przyjmujacy=:Przyjmujacy WHERE ID=:ID");
  19. $STM_update->bindParam(':Nazwa', $nazwa);
  20. $STM_update->bindParam(':Imie', $imie);
  21. $STM_update->bindParam(':Nazwisko', $nazwisko);
  22. $STM_update->bindParam(':Telefon', $telefon);
  23. $STM_update->bindParam(':Usterka', $opis);
  24. $STM_update->bindParam(':Dodatkowe', $dodatkowe);
  25. $STM_update->bindParam(':Sprzet', $sprzet);
  26. $STM_update->bindParam(':Akcesoria', $akcesoria);
  27. $STM_update->bindParam(':Przyjmujacy', $pracownik);
  28. $STM_update->bindParam(':ID', $id);
  29. $STM_update->execute();
  30. header( "location:AdminIndex.php?ServiceUpdate=77083368");
  31. }
  32. ?>
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


zobacz tak:
  1. $STM_update = $dbh->prepare("UPDATE szs_service SET Nazwa=:Nazwa, Imie=:Imie, Nazwisko=:Nazwisko, Telefon=:Telefon, Usterka=:Usterka, Dodatkowe=:Dodatkowe, Sprzet=:Sprzet, Akcesoria=:Akcesoria, Przyjmujacy=:Przyjmujacy WHERE ID=:ID");
  2.  
  3. $binds = array(
  4. ':Nazwa' => $nazwa,
  5. ':Imie' => $imie,
  6. ':Nazwisko' => $nazwisko,
  7. ':Telefon' => $telefon,
  8. ':Usterka' => $opis,
  9. ':Dodatkowe' => $dodatkowe,
  10. ':Sprzet' => $sprzet,
  11. ':Akcesoria' => $akcesoria,
  12. ':Przyjmujacy' => $pracownik,
  13. ':ID' => $id,
  14. );
  15.  
  16. $STM_update->execute($binds);
  17. var_dump($STM_update->errorInfo());
Go to the top of the page
+Quote Post
Vertisan
post
Post #7





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 6.01.2015, 15:44:16 ) *
zobacz tak:
  1. $STM_update = $dbh->prepare("UPDATE szs_service SET Nazwa=:Nazwa, Imie=:Imie, Nazwisko=:Nazwisko, Telefon=:Telefon, Usterka=:Usterka, Dodatkowe=:Dodatkowe, Sprzet=:Sprzet, Akcesoria=:Akcesoria, Przyjmujacy=:Przyjmujacy WHERE ID=:ID");
  2.  
  3. $binds = array(
  4. ':Nazwa' => $nazwa,
  5. ':Imie' => $imie,
  6. ':Nazwisko' => $nazwisko,
  7. ':Telefon' => $telefon,
  8. ':Usterka' => $opis,
  9. ':Dodatkowe' => $dodatkowe,
  10. ':Sprzet' => $sprzet,
  11. ':Akcesoria' => $akcesoria,
  12. ':Przyjmujacy' => $pracownik,
  13. ':ID' => $id,
  14. );
  15.  
  16. $STM_update->execute($binds);
  17. var_dump($STM_update->errorInfo());


Dalej to samo
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 11:47