Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL][PostgreSQL] PostgreSQL na MYSQL
Forum PHP.pl > Forum > Przedszkole
cykcykacz
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. ?>
Derw
Zacznij od zamiany pg_ na mysql_.
Luke_Star
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
blooregard
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.
Luke_Star
blooregard poprostu chyba jakoś tak przeraża nowych pehapowców instalacja i wstępna konfiguracja postgresa na windzie smile.gif
dr_bonzo
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.
cykcykacz
Ok, zainstaluje PostgreSQL, ale i tak proszę o pomoc w analizie tego kodu dla MySQL, zależy mi na tym.
phpion
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.
dr_bonzo
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.
cykcykacz
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!
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.