Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL][PostgreSQL] PostgreSQL na MYSQL
cykcykacz
post
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


Witam,

Kupiłem książkę http://helion.pl/ksiazki/php5zp.htm. Miałem zamiar nauczyć się prawidłowego programowania w PHP.
Lecz już na wstępie napotkałem problem:), mianowicie mam bazę danych MySQL(uczyłem się wcześniej zpytań tej bazy danych oraz łączenia z PHP5) a wszystko w tej książce jest pisane pod PostgreSQL(wiem że różnice są nie wielkie w zapytaniach pomiędzy tymi bazami danych).
Czy ktoś może mi pomóc przetłumaczyć te zapytania na MySQL tak aby skrypt działał prawidłowo?

Kod: class.Widget.php
  1. <?php
  2.  
  3. class Widget {
  4.  
  5.  private $id;
  6.  private $name;
  7.  private $description;  private $hDB;
  8.  private $needsUpdating = false;
  9.  
  10.  public function __construct($widgetID) {
  11.    //Parametr widgetID to klucz główny rekordu
  12.    //w bazie danych, zawierającego dane
  13.    //tego obiektu
  14.  
  15.    //Tworzy uchwyt połączenia i zachowuje go w prywatnej zmiennej składowej
  16.    $this->hDB = pg_connect('dbname=parts user=postgres');
  17.    if(! is_resource($this->hDB)) {
  18.      throw new Exception('Nie można połączyć się z bazą danych.');
  19.    }
  20.    
  21.    $sql = "SELECT \"nazwa\", \"opis\" FROM artykul WHERE nr_artykułu = $widgetID";
  22.    $rs = pg_query($this->hDB, $sql);
  23.    if(! is_resource($rs)) {
  24.      throw new Exception("Błąd przy wykonywaniu instrukcji wyboru.");
  25.    }
  26.    
  27.    if(! pg_num_rows($rs)) {
  28.      throw new Exception('Szukanego artykułu nie ma w bazie!');
  29.    }
  30.        
  31.    $data = pg_fetch_array($rs);
  32.    $this->id = $widgetID;
  33.    $this->name = $data['nazwa'];
  34.    $this->description = $data['opis'];
  35.    
  36.  }
  37.  
  38.  public function getName() {
  39.    return $this->name;
  40.  }
  41.  
  42.  public function getDescription() {
  43.    return $this->description;
  44.  }
  45.  
  46.  public function setName($name) {
  47.    $this->name = $name;
  48.    $this->needsUpdating = true;
  49.  }
  50.  
  51.  public function setDescription($description) {
  52.    $this->description = $description;
  53.    $this->needsUpdating = true;
  54.  }
  55.  
  56.  public function __destruct() {
  57.    if(! $this->needsUpdating) {
  58.      return;
  59.    }
  60.    
  61.    $sql = 'UPDATE "artykul" SET ';
  62.    $sql .= "\"nazwa\" = '" . pg_escape_string($this->name) . "', ";
  63.    $sql .= "\"opis\" = '" . pg_escape_string($this->description) . "' ";
  64.    $sql .= "WHERE nr_artykulu = " . $this->id;
  65.    
  66.    $rs = pg_query($this->hDB, $sql);
  67.    if(! is_resource($rs)) {
  68.      throw new Exception('Wystąpił błąd podczas aktualizacji bazy danych');
  69.    }
  70.    
  71.    //Koniec operacji na bazie danych. Zamkmnięcie połączenia.
  72.    pg_close($this->hDB);
  73.  }
  74. }
  75. ?>


Kod: testwidget.php
  1. <?php
  2.  
  3. require_once('class.Widget.php');
  4.  
  5.  try {
  6.    $objWidget = new Widget(1);
  7.  
  8.    print "Nazwa artykułu: " . $objWidget->getName() . "<br>\n";
  9.    print "Opis artykułu: " . $objWidget->getDescription() . "<br>\n";
  10.  
  11.    $objWidget->setName('Buty');
  12.    $objWidget->setDescription('Buty z dużym przebiegiem!');
  13.  } catch (Exception $e) {
  14.      die("Wystąpił problem: " . $e->getMessage());
  15.  }
  16.  
  17. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Derw
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 19.03.2009

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


Zacznij od zamiany pg_ na mysql_.
Go to the top of the page
+Quote Post
Luke_Star
post
Post #3





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

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


Kod
"SELECT \"nazwa\", \"opis\" FROM artykul WHERE nr_artykułu = $widgetID"


Dziwny jakiś ten zapis

Kod
"SELECT `nazwa`,` opis` FROM `artykul` WHERE `nr_artykułu` = $widgetID"


Mysql lubi ciapki `` smile.gif


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
Go to the top of the page
+Quote Post
blooregard
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
Lecz już na wstępie napotkałem problem:), mianowicie mam bazę danych MySQL(uczyłem się wcześniej zpytań tej bazy danych oraz łączenia z PHP5) a wszystko w tej książce jest pisane pod PostgreSQL(wiem że różnice są nie wielkie w zapytaniach pomiędzy tymi bazami danych).

A nie możesz wykorzystac sytuacji i przy okazji nauki z tej książki zapoznać się z PostreSQL ? I juz będziesz miał atut: znajomośc DWÓCH systemów bazodanowych, zamiast jednego.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Luke_Star
post
Post #5





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

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


blooregard poprostu chyba jakoś tak przeraża nowych pehapowców instalacja i wstępna konfiguracja postgresa na windzie smile.gif


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat(Luke_Star @ 24.06.2009, 09:55:12 ) *
Kod
"SELECT \"nazwa\", \"opis\" FROM artykul WHERE nr_artykułu = $widgetID"


Dziwny jakiś ten zapis

Kod
"SELECT `nazwa`,` opis` FROM `artykul` WHERE `nr_artykułu` = $widgetID"


Mysql lubi ciapki `` smile.gif


Nie dziwny, tylko to jest Postgresql.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
cykcykacz
post
Post #7





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


Ok, zainstaluje PostgreSQL, ale i tak proszę o pomoc w analizie tego kodu dla MySQL, zależy mi na tym.
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Luke_Star @ 24.06.2009, 10:05:41 ) *
blooregard poprostu chyba jakoś tak przeraża nowych pehapowców instalacja i wstępna konfiguracja postgresa na windzie smile.gif

Nie wiem co w tym przerażającego: "dalej, dalej, zakończ". Wg mnie poziom trudności bardzo zbliżony do instalacji MySQL.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Dzizez, wez manual do reki pg_connect" title="Zobacz w manualu PHP" target="_manual i poczytaj o kazdej z funkcji, dla mysql sa prawie identyczne funckje, ale tez musisz o nich poczytac, skoro sie uczyc php/sql.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
cykcykacz
post
Post #10





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


Dzięki, poczytam.

Jak czegoś nie zrozumie, napiszę.


Witam,
ponownie jednak zdecydowałem się na postgreSQL, odpaliłem skrypt "testwidget.php" dane prawidło pobiera z bazy danych i wyświetla mi komunikat:

Nazwa artykułu: Korale
Opis artykułu: Korale koloru koralowego

Jednak po odświeżeniu stronki nie pojawia się komunikat(natomiast autor książki pisze że po każdym odświeżeniu www po winien pojawić się komunikat):

Nazwa artykułu: Buty
Opis artykułu: Buty z dużym przebiegiem!

Ten post edytował cykcykacz 24.07.2009, 21:55:21
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: 22.08.2025 - 10:14