Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Błąd z prepare
Dominator
post
Post #1





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


Dlaczego pojawia mi się taki błąd ?

Fatal error: Call to a member function prepare() on a non-object in ...

  1. function PDOConnect($host, $dbname, $user, $pass)
  2. {
  3. try
  4. {
  5. $dbh = new PDO('mysql:host='.$host.';dbname='.$dbname.'', $user, $pass);
  6. $dbh = null;
  7. }
  8. catch (PDOException $e)
  9. {
  10. print "ERROR =>: ".$e->getMessage();
  11. die();
  12. }
  13. }
  14.  
  15. PDOConnect("localhost", "xxx", "xxx","xxx");
  16.  
  17. $dbh = PDOConnect("localhost", "xxx", "xxx","xxx");
  18. $sth = $dbh->prepare("SELECT xxx FROM xxx");
  19. $sth->execute();
  20. $result = $sth->fetchAll();
  21. print_r($result);


Dodam, że wczoraj rozpocząłem naukę PDO, więc proszę o wyrozumiałość.

Oraz czy ja w bezpieczny sposób wyciągam dane z bazy ?
Go to the top of the page
+Quote Post
webdice
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Zmienna dbh jest niedostępna poza funkcją. Dobrze kombinujesz przypisując do niej wartość zwracaną przez funkcje. Problem w tym że tej wartości nie zwracasz wink.gif.

  1. function PDOConnect($host, $dbname, $user, $pass)
  2. {
  3. //...
  4.  
  5. return $dbh;
  6. }
Go to the top of the page
+Quote Post
memory
post
Post #3





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


  1. $dbh = null;
niepotrzebne
Go to the top of the page
+Quote Post
Dominator
post
Post #4





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


Dzięki chłopaki, naprawiłem to wink.gif

Macie po + smile.gif

Ale jeszcze pozostaje jedna kwestia - czy ja w bezpieczny sposób wyciągam dane z bazy ?
Go to the top of the page
+Quote Post
Mackos
post
Post #5





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


No jeszcze musisz bindować wartości przed execute czyli:
  1. $pdo->query("SELECT * FROM cos WHERE imie=:zmienna_string and wiek=:zmienna_int");
  2. $pdo -> bindValue(":zmienna_string", $zmienna_str, PDO::PARAM_STR);
  3. $pdo -> bindValue(":zmienna_int", $zmienna_int, PDO::PARAM_INT);
  4. $pdo -> execute()


//Edit
Polecam http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO


Ten post edytował Mackos 25.07.2012, 11:56:38


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO
http://pl.wikibooks.org/wiki/PHP/Pobieranie_rekordów


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Dominator
post
Post #7





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


Cytat(Mackos @ 25.07.2012, 12:55:31 ) *
No jeszcze musisz bindować wartości przed execute czyli:
  1. $pdo->query("SELECT * FROM cos WHERE imie=:zmienna_string and wiek=:zmienna_int");
  2. $pdo -> bindValue(":zmienna_string", $zmienna_str, PDO::PARAM_STR);
  3. $pdo -> bindValue(":zmienna_int", $zmienna_int, PDO::PARAM_INT);
  4. $pdo -> execute()


Bardzo dziękuję smile.gif

Wszyscy macie po +

Ten post edytował Dominator 25.07.2012, 11:58:17
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 03:55