Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]PDO po raz kolejny
Marcinekk
post
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


Witam, w config.php mam funkcje, która pobiera dane użytkownika:

  1. function get_user_data($user_id = -1) {
  2.  
  3.  
  4. if($user_id == -1) {
  5. $user_id = $_SESSION['user_id'];
  6. }
  7. $result = $pdo->query("SELECT * FROM `panel_users` WHERE `user_id` = '{$user_id}' LIMIT 1");
  8. if(mysql_num_rows($result) == 0) {
  9. return false;
  10. }
  11. return mysql_fetch_assoc($result);
  12. }


Trochę tutaj pozamieniałem na PDO lecz wywala bląd:

Kod
Fatal error: Call to a member function query() on a non-object in /home/xxx/public_html/config.php on line 36


Kilka linijek wyżej jest połączenie wykorzystujące PDO, mimo to wywala ten błąd, proszę o pomoc.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Przepisywanie przestarzałych funkcji MySQL na PDO


--------------------
Go to the top of the page
+Quote Post
Marcinekk
post
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


No tak, ale i tak wywala, że nie ma takiej funkcji jak query...
Go to the top of the page
+Quote Post
Fred1485
post
Post #4





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Co trzymasz w zmiennej $pdo bo na pewno nie jest to obiekt klasy PDO
Cytat
on a non-object


Ten post edytował Fred1485 20.06.2015, 18:13:35


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Nie, że nie ma funkcji query, tylko, że nie jest obiektem - a przecież PDO jest obiektowe. Wywal klamry i użyj kropki.


--------------------
Go to the top of the page
+Quote Post
Marcinekk
post
Post #6





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


  1. try {
  2. $pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password );
  3. echo 'Połączenie nawiązane!';
  4. } catch(PDOException $e){
  5. echo 'Połączenie nie mogło zostać utworzone.<br />';
  6. }


Które klamry na kropki mam zamienić?

Ten post edytował Marcinekk 20.06.2015, 18:15:43
Go to the top of the page
+Quote Post
Fred1485
post
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Połączenie masz nawiązane? Nie rzuca wyjątkiem?


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Marcinekk
post
Post #8





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


Jest nawiązane, wstawiłem kod jak to wygląda..
Go to the top of the page
+Quote Post
Fred1485
post
Post #9





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Podeślij cały kod jak możesz.


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Marcinekk
post
Post #10





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


  1. try {
  2. $pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password );
  3. echo 'Połączenie nawiązane!';
  4. } catch(PDOException $e){
  5. echo 'Połączenie nie mogło zostać utworzone.<br />';
  6. }
  7.  
  8.  
  9. function get_user_data($user_id = -1) {
  10.  
  11.  
  12. if($user_id == -1) {
  13. $user_id = $_SESSION['user_id'];
  14. }
  15. $result = $pdo-> exec("SELECT * FROM `panel_users` WHERE `user_id` = '{$user_id}' LIMIT 1");
  16. if(mysql_num_rows($result) == 0) {
  17. return false;
  18. }
  19. return mysql_fetch_assoc($result);
  20. }
Go to the top of the page
+Quote Post
Fred1485
post
Post #11





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


W funkcji wypadałoby odwołać się do $pdo poprzez

  1. global $pdo;


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Marcinekk
post
Post #12





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


Lol, wcześniej to tam umieszczałem i nie działało.

Następny błąd:

Kod
Warning: mysql_num_rows() expects parameter 1 to be resource, integer given in /home/u202840681/public_html/config.php on line 32

Linijka:

  1. if(mysql_num_rows($result) == 0) {


całość:

  1. if(mysql_num_rows($result) == 0) {
  2. return false;
  3. }
  4. return mysql_fetch_assoc($result);

Go to the top of the page
+Quote Post
Fred1485
post
Post #13





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


  1. $mysql_host = '';
  2. $database = '';
  3. $username = '';
  4. $password = '';
  5. try {
  6. $pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database, $username, $password );
  7. echo 'Połączenie nawiązane!';
  8. }
  9. catch(PDOException $e){
  10. echo 'ERROR:'. $e->getMessage();
  11. }
  12.  
  13.  
  14. function get_user_data($user_id = -1) {
  15. global $pdo;
  16.  
  17. $id = 1;
  18.  
  19. $query = $pdo->prepare("SELECT * FROM `panel_users` WHERE `user_id` = :id LIMIT 1");
  20. $query->bindValue(':id', $id, PDO::PARAM_INT);
  21. $query->execute();
  22.  
  23. if($query->rowCount() == 0) {
  24. return false;
  25. }
  26. return $query->fetchALL();
  27. }
  28.  
  29. get_user_data();


dodaj i pozmieniaj co trzeba, szkielet masz na tacy wink.gif

Ten post edytował Fred1485 20.06.2015, 19:04:05


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Marcinekk
post
Post #14





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


Tu się pojawia kolejny problem, nie mam zielonego pojęcia dlaczego nie pobiera tych danych. Ani Id ani loginu.
Go to the top of the page
+Quote Post
Fred1485
post
Post #15





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Ale skąd je chcesz pobrać?


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Marcinekk
post
Post #16





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


No z bazy danych, do tego służy ta funkcja get_user_data.

Mam przykładowo coś takiego:

  1. require 'templates/header.php';
  2.  
  3. include 'config.php';
  4.  
  5. $user_data = get_user_data();
  6.  
  7. echo '<p>Witaj <b>'.$user_data['user_name'].'</b>!</p>


Nie pokazuje tego logiu.
Go to the top of the page
+Quote Post
Fred1485
post
Post #17





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Do funkcji przekazujesz parametr(sam tak napisałeś) i na podstawie tego parametru wykonujesz zapytanie do bazy...


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Marcinekk
post
Post #18





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


Już nie rozumiem.

Wywołując '.$user_data['user_name'].' powinna się wykonać funkcja get_user_data i pokazać te dane, a tak nie jest.
Go to the top of the page
+Quote Post
Fred1485
post
Post #19





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


1. tworzysz obiekt pdo,
2. wywołujesz funkcję get_user_data z parametrem, np get_user_data(2)
3. wykonujesz zapytanie select xxx where id = parametr
4. otrzymujesz odpowiedź
5. przetwarzasz dane

Ty chyba sam nie wiesz do czego dążysz


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Marcinekk
post
Post #20





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 27.09.2013

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


W takim razie skoro muszę sam dodatkowe zapytanie robić to po cholere get_user_data jest?
Nie było tak jak było na samym mysql.

Robiłem zawsze u góry $user_data = get_user_data(); i gdzieś niżej
'.$user_data['user_name'].' i to normalnie pokazywało, nie musiałem sie bawić w dodatkowe zapytania.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 20.08.2025 - 19:47