Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Problem z PDO (przejście z mysql_X na PDO) puste wartosci
sunneku
post 17.01.2010, 19:07:15
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.05.2008

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


Witam

Z związku z dziwnym problemem z apachem zostałem zmuszony do zamiany kodu z tradycyjnego mysql_X na nową jak dla mnie rzecz - na PDO::

Proszę o pomoc z poprawną zamianą na PDO :/ - problem jest następujący:

wygląda na to że poniższe linie zawodzą mnie:

  $_SESSION["koszyk"]["$id"]["towar"]=$row['towar'];  //error?
  $_SESSION["koszyk"]["$id"]["cena"]=$row['cena'];   //error?

Mają pusty komunikat.Proszę o pomoc. W razie potrzeby mogę udostępnić CAŁY kod chociaż nie jest to chyba nam potrzebne? Poniżej przezentuje oryginalny kod i po zmianach dokonanych w celu przejścia na PDO

Oryginalny kod wyglądał tak:

  1. if ($id<>"") {
  2. if (mysql_connect($sql_serwer, $sql_login, $sql_haslo)
  3. and mysql_select_db($sql_baza)) {
  4. $wynik = mysql_query("SELECT * FROM $sql_tabela WHERE id='$id'");
  5. }
  6. if ($wynik and mysql_num_rows($wynik)==1) {
  7. $dane = mysql_fetch_array($wynik);
  8. $_SESSION["koszyk"]["$id"]["towar"]=$dane["towar"];
  9. $_SESSION["koszyk"]["$id"]["cena"]=$dane["cena"];
  10.  
  11. if ($sz=="") $_SESSION["koszyk"]["$id"]["ile"]++;
  12. else if ($sz>=1) $_SESSION["koszyk"]["$id"]["ile"]=$sz;
  13. else if ($sz<=0) unset($_SESSION["koszyk"]["$id"]);
  14. }
  15. }



Próbuje to zamienić na PDO i mam coś takiego:

  1. if ($id<>"") {
  2. try
  3. {
  4. $pdo = new PDO('mysql:host=localhost;dbname=www', 'root', '');
  5. echo 'Nawiązałem połączenie';
  6. }
  7. catch(PDOException $e)
  8. {
  9. echo 'Błąd:'.$e->getMessage();
  10. }
  11.  
  12. $stmt = $pdo -> prepare('SELECT id, towar, cena FROM produkty WHERE id= ? ');
  13. $stmt->execute(array($id));
  14. $totalrow = $stmt->fetchColumn();
  15. if ($totalrow == 1)
  16. {
  17. $row = $stmt -> fetch();
  18.   echo $row['towar']; //niewyswietla
  19.   echo $row['cena']; //niewyswietla
  20.   $_SESSION["koszyk"]["$id"]["towar"]=$row['towar'];  //error?
  21.   $_SESSION["koszyk"]["$id"]["cena"]=$row['cena'];   //error?
  22.  
  23. if ($sz=="") $_SESSION["koszyk"]["$id"]["ile"]++;
  24. else if ($sz>=1) $_SESSION["koszyk"]["$id"]["ile"]=$sz;
  25. else if ($sz<=0) unset($_SESSION["koszyk"]["$id"]);
  26. }
  27.  
  28. }



Go to the top of the page
+Quote Post
nospor
post 17.01.2010, 20:58:28
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$totalrow = $stmt->fetchColumn();
if ($totalrow == 1)
Ale wogole sprawdziles co te fetchColumn robi? Bo patrzac po uzyciu jakie zrobileś to smiem twierdzic ze nie masz bladego pojęcia jak działa smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sunneku
post 17.01.2010, 21:09:10
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.05.2008

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


Sprawdziłem i jestem względnie pewien że w tym przypadku zwraca mi 1 (echo $totalrow;)
Sam pomysł wziąłem z http://www.php.net/manual/en/pdostatement.fetchcolumn.php z tamtejszego komentarza. W tym przypadku zwraca liczbę kolumn... No i sprawdziłem że wchodzi do pętli.

Tak czy siak proszę dalej o pomoc. gdyż już naprawdę nie mam idei o co chodzi

Go to the top of the page
+Quote Post
nospor
post 17.01.2010, 21:15:05
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
W tym przypadku zwraca liczbę kolumn...
No nie wiem jak ty patrzysz... Dales linka do manuala a tam wyraźnie napisane ze zwraca zupelnie co innego... To zwrace zawartosc kolumn z danego wiersza nie liczbę kolumn.
A jak po tym dasz fetchRow to juz dostaniesz false, bo wskaźnik rekordu zostanie przesuniety.
Wywal te fetchColumn i ten IF bazujący na nim


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sunneku
post 17.01.2010, 21:30:23
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.05.2008

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


C*a miałeś rację. Przepraszam, pomyliłem się. Dziękuję za pomoc.

Dopiero teraz spojrzałem dokładnie i przemyślałem smile.gif

Takie pytanie: jak zliczyć liczbę uzyskanych kolumn? W PDO ?




Tak czy siak. Sam problem rozwiązałeś. Za co BARDZO dziękuję. No i oczywiście kliknąłem "pomógł"

Ten post edytował sunneku 17.01.2010, 21:31:10
Go to the top of the page
+Quote Post
nospor
post 17.01.2010, 21:34:41
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
jak zliczyć liczbę uzyskanych kolumn
Czy ty przypadkiem nie mylisz pojęcie KOLUMNA z pojęciem WIERSZ? Przeciez liczbe kolumn znasz bo sam okreslasz to w select.

Liczba wierszy:
http://pl2.php.net/manual/en/pdostatement.rowcount.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sunneku
post 17.01.2010, 21:41:59
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.05.2008

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


Racja racja chodziło o wiersz. Bardzo dziekuję. 

@admin: temat do zamknięcia.

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 Wersja Lo-Fi Aktualny czas: 16.07.2025 - 00:18