Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Problem z PDO (przejście z mysql_X na PDO) puste wartosci
Forum PHP.pl > Forum > Przedszkole
sunneku
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. }



nospor
$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
sunneku
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

nospor
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
sunneku
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ł"
nospor
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
sunneku
Racja racja chodziło o wiersz. Bardzo dziekuję. 

@admin: temat do zamknięcia.

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.